Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js中创建方法的问题 var mango=新对象(); mango.color=“黄色”; mango.shape=“圆形”; 芒果甜度=8; Object.prototype.howseetami=函数(){ console.log(“嗯嗯好”); } console.log(mango);_Javascript - Fatal编程技术网

Javascript js中创建方法的问题 var mango=新对象(); mango.color=“黄色”; mango.shape=“圆形”; 芒果甜度=8; Object.prototype.howseetami=函数(){ console.log(“嗯嗯好”); } console.log(mango);

Javascript js中创建方法的问题 var mango=新对象(); mango.color=“黄色”; mango.shape=“圆形”; 芒果甜度=8; Object.prototype.howseetami=函数(){ console.log(“嗯嗯好”); } console.log(mango);,javascript,Javascript,问题: 我可以将这一行:Object.prototype.howseetami更改为mango.howseetami,它们都可以工作。但是它们之间有什么区别呢?通常我们使用哪种方法来创建方法?将函数添加到对象原型将使该函数在每个javascript对象上可用。(console.log(window.howseetami))。将其移动到mango将使其成为单个对象的属性。通常您不会向对象.prototype添加任何内容,因为这样它就会添加到所有内容中。例如,它可以用于“”.howseetami()

问题:


我可以将这一行:
Object.prototype.howseetami
更改为
mango.howseetami
,它们都可以工作。但是它们之间有什么区别呢?通常我们使用哪种方法来创建方法?

将函数添加到
对象
原型将使该函数在每个javascript对象上可用。(
console.log(window.howseetami)
)。将其移动到
mango
将使其成为单个对象的属性。

通常您不会向
对象.prototype添加任何内容,因为这样它就会添加到所有内容中。例如,它可以用于
“”.howseetami()
,但这没有多大意义

通常,您有一个特定类型,可以在其中向原型添加方法,例如:

<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>
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);
将该方法添加到原型意味着所有实例都使用相同的方法。如果将方法作为属性添加到实例中,则只有该实例具有该方法,并且不同的实例可以具有该方法的不同实现。例如:

<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>
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);

尝试放置:
console.log(this.color)而不是:
console.log(“Hmm-Hmm-Good”)并查看差异+1您的代码片段帮助我理解了原型的流程:)谢谢:)