JavaScript 特么的继承机制
不是总想 面向对象编程么。 一用到 js 就想 面向对象么。 那么继承肯定是少不了的 对不对?
那么开始了。
一说到这。就要讲讲 prototype 这个原型 鸟东西了。
js里面的 常用对象 都有一个 prototype 属性。 那么他们的prototype 属性呢 是从 Object.prototype 继承过来的。
而Object.prototype 是少数没有从其他类里继承的 对象之一。
也就是说 Date() 对象 就有一个 Date().prototype 属性 Array().prototype 属性。 他们都是从Object.prototype上继承过来的。
那么怎么就算继承机制呢?
继承有这么几个特点。
首先 子类要继承父类中的所公开的特性对吧.
然后呢 ,修改其子类从父类上继承过来的属性 对父类 没有影响对吧。
...
如果没有这么几个特性。 其实弱类型的简单复制 完全可以 做到。
但是如果没有继承机制。那么你操作子类的话。父类的属性页会跟着变化。就是你一直在操作父类的引用。
js中的继承就是这么实现的。
每个对象都有一个prototype 的原型属性。 那么这个属性就代表这个对象的 特征。 如果你想让他有别的特性。那么狠简单
function Test(x,y) { //创建一个构造函数里面有两个参数
this.x=x;
this.y=y;
}
function me(){}; //创建一个 方法。 其实方法也是对象的一种 他的 类型是 function
var test=new Test(1,2); //实例这个 对象
me.prototype=test; // 最关键的就是这个地方. 告诉me 的原型 你具有 test 对象的 行为...
alert(new me().x); // 那么 me 对象 就有 x y 属性了.
在特么怎么修改 ,也不会 关系到 test 对象的行为。
其实吧。 ECMAScript 定义了 Object.create(obj); 已经定了这个方法。 可以直接将需要被继承的对象 当做create 方法的参数 传递给被继承的对象。
但是脚本语言实现的不同。 如果没有这个方法。那么就改变原型属性来打到继承的效果吧。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/4686.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
