在javascript中添加函数与原型和对象文字的区别

前端之家收集整理的这篇文章主要介绍了在javascript中添加函数与原型和对象文字的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有一个构造函数
var Quo = function (string) {
     this.status = string;
};

然后使用var myQuo = new Quo(“confused”)创建一个新对象;

有什么区别呢?

Quo.get_status = function () { 
    return this.status;
};

Quo.prototype.get_status = function () { 
    return this.status;
};

解决方法

假设你已经创建了myQuo,就像你所描述的那样
var myQuo = new Quo("confused");

如果将get_status定义为Quo的属性,那么要获取myQuo的状态,您必须调用Quo.get_status.但是,Quo.get_status将需要知道对象上下文(myQuo)来返回正确的状态值.您可以重新定义函数以接受对象作为参数,如下所示:

Quo.get_status = function (quo) { 
  return quo.status;
};
var status = Quo.get_status(myQuo);

或者,您可以在函数中保留Quo.get_status的功能,但您需要以将myQuo绑定到“this”的方式调用函数

Quo.get_status = function() {
  return this.status;
};
var status = Quo.get_status.call(myQuo);

任何解决方案都是尴尬的.首选的解决方案是利用Javascript的原型功能,并将get_status定义为一个原型函数,这些函数将在本地对所有Quo对象(如myQuo)进行访问.

Quo.prototype.get_status = function () { 
  return this.status;
};
var status = myQuo.get_status();

猜你在找的JavaScript相关文章