最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

JS也玩OO继承_javascript技巧

来源:懂视网 责编:小采 时间:2020-11-27 20:34:25
文档

JS也玩OO继承_javascript技巧

JS也玩OO继承_javascript技巧:算了一下,还是来这里了 ^_^ 无忧~~久违了…………贴一个原理的东东吧, [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行](stroll的跟贴) 当然,还可以通过以下几种不用外挂的方法…… 不过要求使用 Script5.5 才可以使用 比如 call
推荐度:
导读JS也玩OO继承_javascript技巧:算了一下,还是来这里了 ^_^ 无忧~~久违了…………贴一个原理的东东吧, [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行](stroll的跟贴) 当然,还可以通过以下几种不用外挂的方法…… 不过要求使用 Script5.5 才可以使用 比如 call

算了一下,还是来这里了 ^_^
无忧~~久违了…………贴一个原理的东东吧,

[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 的成员的

[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的跟贴)
擴展了一下,這樣子是不是有簡單的OOP重載功能?

[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 的成员的
請看如下代碼:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
stroll,方法的確繼承過來了,但我在Son對象的搆造函數裏重寫了BaseMethod()

事實上O.BaseMethod()這樣調用已經不是Base對象的BaseMethod()方法了,而是Son對象的BaseMethod()方法,所以我把Base的一個實例儅作Son的成員base,使用

Son實例.base.BaseMethod()

的格式來引用Base的BaseMethod()方法


另外,我喜懽這句:Base.apply(this, arguments)
呵呵……收到~~(stroll的跟贴)


虽然说JS是没有指针了…… 不知道同时构造一个“父对象”,一个“子对象” 再有一个函数传递一个对象参数,这个参数使用父子共有的方法,是不是能够分别调用相应的方法呢? 还未了解JS 的 this 是不是相当于 虚拟地址的指针呢?
所以替换了方法才能解决上面的疑惑(虽然这个迷惑是菜了点,不过符合逻辑:)

还有……如果里面成员有构造对象的函式,是不是也会像c++一样先构造对象,然后再执行其他函式呢? 这个可能或则肯定是按照从上到下了~~~~语言规定?没试过

有没有试过多个父对象的继承呢?不过也不难想到这个一步……(树状继承)

这些就是偶的疑问啦,呵呵……

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

JS也玩OO继承_javascript技巧

JS也玩OO继承_javascript技巧:算了一下,还是来这里了 ^_^ 无忧~~久违了…………贴一个原理的东东吧, [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行](stroll的跟贴) 当然,还可以通过以下几种不用外挂的方法…… 不过要求使用 Script5.5 才可以使用 比如 call
推荐度:
标签: js oo javascript
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top