首页
|
新闻
|
娱乐
|
游戏
|
科普
|
文学
|
编程
|
系统
|
数据库
|
建站
|
学院
|
产品
|
网管
|
维修
|
办公
|
热点
首页
>
编程
>
JavaScript
> 正文
JS也玩OO继承
2019-11-21 02:20:22
字体:
大
中
小
来源:
转载
供稿:网友
算了一下,还是来这里了 ^_^
无忧~~久违了…………贴一个原理的东东吧,
[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行
]
(stroll的跟贴)
当然,还可以通过以下几种不用“外挂”的方法…… 不过要求使用 Script5.5 才可以使用
比如 call 方法 和 apply方法…… 以下是使用 call 的方法来实现的
apply也差不多,只不过后面调用的参数是数组,详细可以自己参考MSScript5.6说明
Bencalie 还记得以前你跟我说call apply的使用方法么?这回这个答案算圆满了吧?
[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行
]
(stroll的跟贴)
注意观察所谓“继承对象”的 this.Prototype 这个变量(一开始我没注意看,以为是关键字……害我苦找资料)
this.Prototype = new JSObject(); // 注意:这可不是小写的prototype
this.Prototype.Speak = function(s){.......}
在构造对象后直接反馈 return this.Prototype 其实这个就是 JSPObject 对象,
并不是 JSHuman 对象,所以 var o = new JSHuman();
o 这个实例是无法访问 JSHuman 的成员的
//westfly原创 //不要问我有什么用,当你某一天需要用到时能想起来就可以了 function JSObject() { this._Name = "JSObject"; this.Set_Name = function(Value){ this._Name = Value; } this.Get_Name = function(){ return this._Name; } } function JSHuman() // extends JSObject { this.Prototype = new JSObject(); // 注意:这可不是小写的prototype this.Prototype.Speak = function(s){ alert(s); } return this.Prototype; } var o = new JSHuman(); o.Set_Name("westfly"); o.Speak(o.Get_Name());
[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行
]
(bencalie的跟贴)
stroll,看了你的 答,非常 意。
你又把 勾起 了,那麽 Base.call(this, v_sName)用成Base.apply(this),我怎麽 v_sName 到Base.BaseName,我反倒 apply的使用有 不好理解了。
最 使用Base.apply(this, [v_sName])用 成功
那麽 看call和apply 是 不同了?
(Roman的跟贴)
[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行
]
(bencalie的跟贴)