请考虑以下事项:
function Person() {
this.talk = function() {
alert('talking');
}
}
var person = new Person();
person(); // Make this alert 'standing'
person.talk();
是否可以在保留对象属性/方法和原型链的同时为实例本身分配一个函数?
答案 0 :(得分:4)
您可以创建一个函数对象并返回它,就像这样
function Person() {
// Create a function object
var F = function() {
console.log('standing');
}
// Add attributes to the function object
F.talk = function() {
console.log('talking');
}
// Return the function object itself
return F;
}
var person = new Person();
person();
# standing
person.talk();
# talking
由于Person
构造函数返回一个函数对象,因此可以执行该函数对象。这就是person()
正在发挥作用的原因。
注意:强>
由于我们正在返回一个函数 Object ,因此我们可以在不使用new
关键字的情况下调用它。因此,以下内容将与之前的方式完全相同
var person = Person();
person();
person.talk();
答案 1 :(得分:0)
function Person ()
{
alert ("standing");
}
Person.talk=function () {alert ("talk");}
var person=Person;