在创建javascript对象时,我可以在构造函数或原型中放置方法声明.例如,假设我想要一个具有Name属性和Bark方法的Dog类.我可以将Bark方法的声明放入构造函数中:
var Dog = function(name) {
this.Name = name;
this.Bark = function() {
alert(this.Name + " bark");
};
}
Run Code Online (Sandbox Code Playgroud)
或者我可以作为原型对象的方法:
var Dog = function(name) {
this.Name = name;
}
Dog.prototype.Bark = function() {
alert(this.Name + " bark");
};
Run Code Online (Sandbox Code Playgroud)
当我实例化Dog类型的对象时,两种方法似乎都正常工作:
var dog = new Dog("Fido");
dog.Bark(); //Both approaches show "Fido bark"
Run Code Online (Sandbox Code Playgroud)
我应该更喜欢这些方法中的一种吗?使用一个优于另一个是否有任何优势?在幕后,这两种方法最终做了完全相同的事情吗?大多数人倾向于采用哪种方法?
谢谢您的帮助.