首页
编程
PHP基础
PHP教程
php框架
JavaScript
asp.net
AJAX
正则表达式
ASP
html代码
css
前端框架
Python
服务器
数据库
mysql
mssql
redis
数据库问题
系统教程
window10教程
window8教程
window11教程
window7教程
windowxp教程
linux教程
U盘教程
操作系统
Windowsxp
windows7
windows8
windows10
其他操作系统
程序下载
企业程序
小说/有声
网站模板
第三方软件
新闻资讯
第三方源码
小程序
商城源码
框架书籍
前端开发
服务器端开发
数据库
开发软件
其他手册
jquery插件库
输入
banner图
图片脚本
导航/分类
播放器
css3
jQuery脚本
jqueryhtml5
进度条
贴图/客服
在线工具
编码转换工具
在线IDE编码工具
开发手册
linux命令大全
Bootstrap
HTML参考手册
css手册/教程
ThinkPHP5.0
ThinkPHP3.2
当前位置:
Gxlcms
>
JavaScript
>
JS也玩OO继承_javascript技巧
JS也玩OO继承_javascript技巧
时间:2021-07-01 10:21:17
帮助过:6人阅读
算了一下,还是来这里了 ^_^
无忧~~久违了…………贴一个原理的东东吧,
[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需刷新才能执行]
(stroll的跟贴)
To bencalie ,是的,的确仅仅如此
不过不要认为apply这样是麻烦,其实如果两个对象的构造参数顺序一样的话,可以这么来
Base.apply(this, arguments) 很方便吧?
附上:(因为30秒才一贴~~)
不过你那里添加一个 new Base() 是认为无法继承的做法,其实是可以继承方法的,O.BaseMethod() 的调用就是了 ^_^
to:bencalie(Roman的跟贴)
基对象的方法被overwrite了.为什么stroll说 var o = new JSHuman(); o 这个实例是无法访问 JSHuman 的成员的
請看如下代碼:
登录
记住我的登录
忘记密码?
登录
我已阅读
用户协议
及
版权声明
注册