JScript中的prototype(原型)属性研究(1)

简介:

 我们知道JScript中对象的prototype属性,是用来返回对象类型原型的引用的。我们使用prototype属性提供对象的类的一组基本功能。并且对象的新实例会"继承"赋予该对象原型的操作。但是这个prototype到底是怎么实现和被管理的呢?

    对于对象的prototype属性的说明,JScript手册上如是说:所有 JScript 内部对象都有只读的 prototype 属性。可以向其原型中动态添加功能(属性和方法),但该对象不能被赋予不同的原型。然而,用户定义的对象可以被赋给新的原型。

    下面我们看三个经典的prototype属性的使用示例。

    1、为脚本环境内建对象添加方法:

None.gif Array.prototype.max =  function()
None.gif {
None.gif      var i, max =  this[0];
None.gif      for (i = 1; i <  this.length; i++)
None.gif     {
None.gif        if (max <  this[i])
None.gif        max =  this[i];
None.gif     }
None.gif     return max;
None.gif };

    2、为用户自定义类添加方法:
None.gif  function TestObject(name)
None.gif {
None.gif      this.m_Name = name;
None.gif }
None.gif
None.gif TestObject.prototype.ShowName =  function()
None.gif {
None.gif     alert( this.m_Name);
None.gif };

    3、更新自定义类的prototype:
None.gif  function TestObjectA()
None.gif {
None.gif     this.MethodA =  function()
None.gif    {
None.gif       alert('TestObjectA.MethodA()');
None.gif    }
None.gif }
None.gif
None.gif  function TestObjectB()
None.gif {
None.gif     this.MethodB =  function()
None.gif    {
None.gif       alert('TestObjectB.MethodB()');
None.gif    }
None.gif }
None.gif
None.gif TestObjectB.prototype =  new TestObjectA();

    第三个很眼熟吧?对啊,它就是我们前面介绍的 原型继承法呀~~ 不过今天我们不是研究"继承",之所以可以这样来实现一种继承,只是利用了prototype属性的一个副作用而已。

    prototype还有一个默认的属性:constructor,是用来表示创建对象的函数的(即我们OOP里说的构造函数)。constructor属性是所有具有prototype属性的对象的成员。它们包括除Global和Math对象以外的所有JScript内部对象。constructor属性保存了对构造特定对象实例的函数的引用。

    弄清楚了JScript中prototype属性怎么使用后,下面我们再来深入的研究它。


  本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。



目录
相关文章
|
2月前
|
JavaScript 前端开发
深入理解 JavaScript 对象原型,解密原型链之谜(下)
深入理解 JavaScript 对象原型,解密原型链之谜(下)
|
2月前
|
JavaScript 前端开发
深入理解 JavaScript 对象原型,解密原型链之谜(上)
深入理解 JavaScript 对象原型,解密原型链之谜(上)
|
5月前
|
JavaScript 前端开发 Java
JavaScript难点:原型、原型链、继承、new、prototype和constructor
JavaScript 不像 Java、C++ 这种纯面向对象的语言,可以通过类实现继承,JavaScript中的继承是通过原型实现的,即使 ES6 中新增的 class 类也只是原型的语法糖而已
50 4
|
8月前
|
JavaScript 前端开发 Java
JavaScript 高级2 :构造函数和原型
JavaScript 高级2 :构造函数和原型
61 0
|
9月前
|
JavaScript 前端开发
JavaScript 中的原型、对象原型、原型继承和原型链
在 JavaScript 中,原型(prototype)是一个对象,它用于实现对象之间的继承和共享属性。JavaScript 是一种基于原型的编程语言,每个对象都有一个原型,而原型又可以拥有自己的原型,形成一个原型链。
|
9月前
|
JavaScript 前端开发 程序员
JavaScript -- 原型与原型链
JavaScript -- 原型与原型链
|
前端开发 JavaScript
JavaScript基础系列(7):原型和原型链,我是这么理解的
现在假设所有人员都是中国人,也就是国籍的属性始终就是中国,是固定的,不需要进行参数传递。
74 0
|
Web App开发 JavaScript 前端开发
原型(prototype) 和 原型链(__proto__) —— 别再为 JavaScript 的原型苦恼了
原型(prototype) 和 原型链(__proto__) —— 别再为 JavaScript 的原型苦恼了
80 0
|
JavaScript 前端开发
JavaScript学习系列之原型、原型链
JavaScript学习系列之原型、原型链
155 0
|
前端开发 JavaScript Java
JavaScript的继承,原型和原型链
想必,学过 java 和 C++ 的小伙伴们,对于继承这个词应该不陌生,最近我也是一直在巩固JavaScript的知识,今天就来一起学习一下JavaScript里的继承吧。