我读到过对象是属性和方法的集合。那么,如果函数是对象,那么函数对象如何适应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);