函数对象如何适应JavaScript中对象的定义?



我读到过对象是属性和方法的集合。那么,如果函数是对象,那么函数对象如何适应JavaScript中对象的定义呢?我试图使一个函数的属性和函数的例子,但我有任何成功。

 function myperson(){
    this.name= "Bruno";
    personAbility = function(){document.write(1+1);};
}
document.write(myperson.name);

我做错了什么?你能帮帮我吗?非常感谢!

您没有在代码中创建myperson的实例。

正如你所说,函数是对象。是的,函数是对象,它们也有属性。当你说myperson.name时,你实际上是在访问函数的名称字段。

因为它是一个函数,它被命名为函数,函数的名称是myperson,你已经为这个函数声明了,这是由Javascript引擎处理的。

同样,函数内部的this指向window对象,因为您没有作为构造函数调用该函数或绑定到任何对象。因此,仅仅调用函数不会设置myperson.name属性,您需要使用new操作符,如new myperson,并创建一个对象,该对象将具有您想要访问的属性"name"。


function myperson() {
    this.name= "Bruno";
    this.personAbility = function(){document.write(1+1);};
}
var per = new myperson();
document.write(per.otherName);
//call the personAbility method like below
per.personAbility();

你做得对,你只需要实例化你的myperson对象。您可以通过编写var myPerson = new myperson()来做到这一点。然后,console.log(myPerson)应该显示:myperson {name: "Bruno"}

为了配合document.write的示例,您可以执行document.write(myPerson.name)

一旦您将函数视为构造函数,this关键字将变得可用,这意味着您必须通过使用new关键字创建一个新实例:

function myperson(){
    this.name= "Bruno";
    personAbility = function(){document.write(1+1);};
}
var person = new myperson();
document.write(person.name);

相关内容

  • 没有找到相关文章

最新更新