0
点赞
收藏
分享

微信扫一扫

js原型(2)


上一篇文章说了,js原型的访问,以及怎么增加他的效率的问题,现在讲讲怎么定义自己的原型上的方法属性。
先来说一些预备知识。js是基于原型链的,和其他语言的继承不一样,所以js有其类似于继承的独特代码,下面看一些例子:
我们以前这样写:

var decimalDigits = 2,

tax = 5;



function add(x, y)

return x + y;

}



function subtract(x, y)

return

有了原型之后,我们可以这样写:

var Calculator = function (decimalDigits, tax)

this.decimalDigits = decimalDigits;

this.tax = tax;

};

Calculator.prototype = {

add: function (x, y)

return x + y;

},



subtract: function (x, y)

return

还可以用另外一种方式:

     Calculator.prototype = function () { } ();

Calculator.prototype = function () {

add = function (x, y) {

return x + y;

},



subtract = function (x, y) {

return x - y;

}

return {

add: add,

subtract: subtract

}

} ();

```
这里写代码片

还有一种是分步声明:

//分步声明
var BaseCalculator = function ()
//为每个示例都声明一个小数位数
this.decimalDigits = 2;
}
//使用原型给BaseCalculator声明两个方法
BaseCalculator.prototype.add = function (x,y)
return x+y;
}
BaseCalculator.prototype.sub = function (x,y)
return x-y;
}
var Calculator = function ()
//为每个实例都声明一个税收数字
this.tax = 5;
};
Calculator.prototype = new

这里把计算的给原型链是让每个创建的实例都拥有这两个add和sub方法。

重写原型:

//覆盖前面Calculator的add() function
Calculator.prototype.add = function (x, y)
return x + y + this.tax;
};

var calc = new Calculator();
alert(calc.add(1, 1));

hasOwnProperty函数

这个函数可以检测你的对象上有没有自己定义的属性,而不是原型链上的属性,

/ 修改Object.prototype

Object.prototype.bar = 1;

var foo = {goo: undefined};



foo.bar; // 1

'bar' in foo; // true


foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true

使用hasOwnProperty可以判断到底有没有自己定义的属性,不要做什么假设。


举报

相关推荐

JS原型 原型链

JS原型与原型链

js原型和原型链

js原型与原型链

JS原型对象、原型链

js基础笔记学习117-原型2

js-原型

js 原型链

0 条评论