在node.js中 User.prototype.save = function(){…} 和 User.save = function(){…} 有什么区别呢?
19 回复
你可以同时写两个,然后调用的时候,是只调用User.save 然后你 delete User.save 后 还是可以继续调用 User.save 不过其实是调用User.prototype.save的。
User.save = function(){......}
是这样调用的:User.save()
User.prototype.save = function(){.......}
是这样调用的:
var user = new User();
user.save();
@lyman prototype和User是两个域,只有User实例化时,prototype中的成员对象才会挂到实例化后的对象中。直接调原型对象下的save会报错的。
var User = function () {};
User.prototype.save = function () {
console.log('This is User.prototype.save')
};
User.save = function () {console.log('This is User.save')};
delete User.save;
User.save();
这样是不行的,如果调User.prototype.save()就可以。
@zaobao 噢,谢谢指正~~ 确实是在User被new以后才能delete User.save后才能再调用 即: var u = new User(); u.save(); //调用User.save() delete u.save; //删除User.save u.save(); //调用User.prototype.save
@lyman 我刚刚测试了一下
var User = function (){}; User.prototype.save = function () { console.log('This is User.prototype.save') }; User.save = function () {console.log('This is User.save')}; var u = new User(); u.save(); //调用User.prototype.save() delete User.save; //删除User.save u.save();//调用的依然是User.prototype.save()User.save是 User函数的方法,和 u 这个实例没有什么关系。