JS 中prototype 的问题

问题描述

//Object对象的inObj设置为1;Object.prototype.inObj = 1;//定义A类;function A(){//给属性设置值为2;this.inA = 2;}//给A类的inAproto属性设置为3;A.prototype.inAProto = 3;//这下面两句是什么意思?B.prototype = new A();B.prototype.constructor = B;//定义B类;function B(){//给B类属性设置值为4;this.inB = 4;}B.prototype.inBroto = 5;x = new B;document.write(x.inObj+","+x.inA+","+x.inAProto+","+x.inB+","+x.inBroto);//这下面两句是什么意思?B.prototype = new A();B.prototype.constructor = B;

解决方案

B.prototype = new A(); B.prototype.constructor = B; 这是实现继承的一个方式,可以叫原型拷贝你可以暂时把圆形理解为java中的静态变量A.prototype.inAProto = 3; 这样每个A的实例共用inAProto 这个属性而this.inA = 2;每个实例中inA 都是不同的引用new A()的结果是一个对象,其中包含了 inA = 2; inAProto = 3;这两个属性再将这个对象赋给B的原型 B.prototype,那B这个类中就有了 inA = 2; inAProto = 3 这两个属性 因为prototype中默认都是有constructor这个属性的,这个属性指向创建B对象的函数 也就是 function B(){ //给B类属性设置值为4; this.inB = 4; } 但是 B.prototype = new A(); 这句话会把B.prototype中的constructor属性覆盖掉,变成了A.prototype.constructor,所以才有了下面这句话 B.prototype.constructor = B; 重新指向一下 不知道说的够不够清楚
解决方案二:
http://sanshi.me/articles/JavaScript-Garden-CN/html/index.html#prototypeB.prototype = new A(); 设置B的prototype属性为A的实例对象B.prototype.constructor = B;// 修正B.prototype.constructor为B本身
解决方案三:
prototype 是JS里的原型B.prototype = new A();的意思就是,将A是B的原型.也就是一个赋值语句.B.prototype.constructor = B;是原型继承构造函数原型属性引用

时间: 2024-08-30 23:41:19

JS 中prototype 的问题的相关文章

JS中prototype关键字的功能介绍及使用示例

prototype 关键字可以为 JS原有对象 或者 自己创建的类 中添加方法或者属性. 也可以实现继承. 例子: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org

JS中prototype的用法实例分析

 这篇文章主要介绍了JS中prototype的用法,实例分析了JS中prototype的常见使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS中prototype的用法.分享给大家供大家参考.具体分析如下: JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A

javascript-关于js中prototype的疑问

问题描述 关于js中prototype的疑问 /*--------------(1)---------------*/ function A(){ this.display = function(){ alert("A display"); } } function B(){ this.show = function(){ alert("B show"); } } A.prototype = new B(); var a = new A(); console.log

JS中prototype关键字的功能介绍及使用示例_javascript技巧

prototype 关键字可以为 JS原有对象 或者 自己创建的类 中添加方法或者属性. 也可以实现继承. 例子: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org

JS中prototype的用法实例分析_javascript技巧

本文实例讲述了JS中prototype的用法.分享给大家供大家参考.具体分析如下: JS中的phototype是JS中比较难理解的一个部分   本文基于下面几个知识点:  1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A.  2 javascript的方法可以分为三类: a 类方法 b 对象方法 c 原型方法 例子如下: function People(name)

关于JS中prototype的理解_javascript技巧

每一个构造函数都有一个属性叫做原型(prototype).这个属性非常有用:为一个特定类声明通用的变量或者函数. prototype的定义 你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javascript的方法可以分为三类: a 类方法 b 对象方

js中prototype用法详细介绍_javascript技巧

prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的方法作已下讲解: 首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类.我们所常见的类包括:数组变量(Array).逻辑变量(Boolean).日期变量(Date).结构变量(Function).数值变量(Number)

js中prototype用法

prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的方法作已下讲解: 首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类.我们所常见的类包括:数组变量(Array).逻辑变量(Boolean).日期变量(Date).结构变量(Function).数值变量(Number)

js中的prototype和constructor

1.js中只有对象,包括对象,函数,常量等. 对象不用解释.函数也有属性,常见之一就是prototype.常量也有属性: (3).__proto__;//Number {} 2.函数的prototype 函数是一种特殊的对象,它可以直接通过小括号来执行自身代码. 函数还有一个特殊的属性prototype,它也是一个对象. prototype对象也有一个特殊的属性constructor,初始的时候它是指向该函数的. 也就是当js解释到function关键字的时候,会创建两个对象,一个是functi