【发布时间】:2016-06-17 03:21:42
【问题描述】:
在以下代码中:
function User(name) {
this.name = name;
}
var user = new User('Jason Bourne');
User.prototype.sayHi = function() {
return 'Hi ' + this.name;
};
var sayHello = function() {
return 'Hello ' + this.name;
};
如果我将对象绑定到 sayHello (sayHello.bind(user)) 或如果我使用 user.sayHi(); 时,这两个函数将给出相同的结果;
所以我的问题是,是否有理由使用一种方法而不是另一种方法?我想我在某处读到不鼓励在原型上创建东西,如果是这样,为什么?
更正:
我错误地写了 Object.prototype.. 而不是指定 (Object I create).prototype..
【问题讨论】:
-
这是不好的做法,专门修改
Object.prototype。user.sayHello = function(){}或function sayHello(obj){}怎么样? -
通过将
sayHi添加到Object.prototype,现在几乎所有东西都有sayHi方法。 -
你不应该接触 Object.prototype。否则,所有对象都继承此方法。
new Date().sayHi(),window.sayHi(),/\d/.sayHi()... -
您的“更正”完全改变了问题,但您将代码原样保留;我很困惑。
-
这是否决票的原因吗?一个抬头然后有机会修改就可以了。不管怎样,我已经解决了。
标签: javascript prototype call bind apply