js原型(2)
来源:互联网 发布:图像拼接算法apap 编辑:程序博客网 时间:2024/06/13 08:07
上一篇文章说了,js原型的访问,以及怎么增加他的效率的问题,现在讲讲怎么定义自己的原型上的方法属性。
先来说一些预备知识。js是基于原型链的,和其他语言的继承不一样,所以js有其类似于继承的独特代码,下面看一些例子:
我们以前这样写:
var decimalDigits = 2, tax = 5; function add(x, y) { return x + y; } function subtract(x, y) { return x - y; }
有了原型之后,我们可以这样写:
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 x - y; } };
还可以用另外一种方式:
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 BaseCalculator();
这里把计算的给原型链是让每个创建的实例都拥有这两个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可以判断到底有没有自己定义的属性,不要做什么假设。
0 0
- js原型(2)
- js原型链(2)
- js原型(一)
- JS(原型链)
- JS 原型(prototype)详解
- JS原型链(补)
- JS原型链(3)
- 破解 JS(原型)继承
- JS原型、原型链
- JS-原型、原型链
- JS原型,原型链
- js原型,原型链
- JS原型+原型链
- js 对象理解(2)---对象的原型与对象
- 学习《JS高级程序设计》(2)——原型
- js原型
- js原型
- js原型
- andorid jni入门教程一之helloworld
- Java字符转C的思路
- STM32 堆和栈的学习(二)
- nyoj571 整数划分(三)
- JNI 方法
- js原型(2)
- 【Usaco2008 Oct 资格赛】灌水 和 Islands and Bridges
- express + redis 构建基于node的开发环境
- 单例模式
- vim插件管理工具apt-vim
- 【NOI2001】炮兵阵地
- JNI——在C中输出日志
- WPF之Binding深入探讨
- poi合并单元格