日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Prototype 框架分析(一)

發布時間:2023/12/31 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Prototype 框架分析(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Prototype 框架分析(一)

Class

關于javascript的面向對象設計可以參看MSDN上的文章《JavaScript使用面向對象的技術創建高級 Web 應用程序》,這樣理解起來更加容易。

  • Class的聲明

Prototype的幫助文檔中關于Class的介紹中有下面的例子:

var?Animal?=?Class.create();

Animal.prototype?=?{

??initialize:?function(name,?sound)?{

????this.name??=?name;

????this.sound?=?sound;

??},

??speak:?function()?{

????alert(name?+?"?says:?"?+?sound?+?"!");

??}

};

var?snake?=?new?Animal("Ringneck",?"hissssssssss");

snake.speak();

//?->?alerts?"Ringneck?says:?hissssssssss!"

//snake.name = "NewRingneck";

//snake.speak();

//如果更改了Animal的名字,它的speak方法仍然是初始化的狀態。

//原因就在于js的閉包原理,所以speak方法應該為

//alert(this.name?+?"?says:?"?+?this.sound?+?"!");

這里Class.create()返回了一個函數,也就是說變量Animal是一個函數。而這個函數的功能就是調用Obj的initialize方法,從而實現類的初始化。因此每個類必須要有initialize方法。

  • Class的繼承

Class的繼承其實就是更改對象的prototype:

//接著上面的例子

var?Dog?=?Class.create();

//Object.extend方法返回Animal對象,并且給這個Animal增加了

//initialize方法,而根據js運行時可以知道會覆蓋先前Animal

//的initialize方法。不過這里Dog.prototype的constructor方法沒有改變跟Animal.prototype一致。

//當然如果不用constructor方法也就可以忽略這一點了。

Dog.prototype?=?Object.extend(new?Animal(),?{

??initialize:?function(name)?{

????this.name??=?name;

????this.sound?=?"woof";

??}??

});

var?fido?=?new?Dog("Fido");

fido.speak();

//?->?alerts?"Fido?says:?woof!"

轉載于:https://www.cnblogs.com/laolaowhn/archive/2008/02/23/1078726.html

總結

以上是生活随笔為你收集整理的Prototype 框架分析(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。