<script>
var mango = new Object ();
mango.color = "yellow";
mango.shape= "round";
mango.sweetness = 8;
Object.prototype.howSweetAmI = function () {
console.log("Hmm Hmm Good");
}
console.log(mango);
</script>
问题:
我可以更改此行:Object.prototype.howSweetAmI
到mango.howSweetAmI
,并且它们都可以正常工作。但它们之间有什么区别?通常我们使用哪种方式来创建方法?
答案 0 :(得分:5)
通常您不会向Object.prototype
添加任何内容,因为它会被添加到所有内容中。例如"".howSweetAmI()
就可以使用它,这没有多大意义。
通常,您有一个特定的类型,您可以在其中添加方法,例如:
function Fruit(color, shape, sweetness) {
this.color = color;
this.shape = shape;
this.sweetness = sweetness;
}
Fruit.prototype.howSweetAmI = function() {
return this.sweetness;
};
var mango = new Fruit("yellow", "round", 8);
将方法添加到原型意味着所有实例都使用相同的方法。如果将方法作为属性添加到实例,则只有该实例具有该方法,并且不同的实例可以具有该方法的不同实现。例如:
var mango = new Fruit("yellow", "round", 8);
var banana = new Fruit("yellow", "bent", 70);
mango.howSweetAmI = function() { return this.sweetness; };
banana.howSweetAmI = function() { return this.sweetness * 0.1; };
答案 1 :(得分:0)
向Object
原型添加函数将使该函数在每个javascript对象上可用。 (console.log(window.howSweetAmI)
)。将其移至mango
将使其成为该单个对象的属性。