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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript面象对象编程的三种方法

發布時間:2025/3/15 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript面象对象编程的三种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?<script>
??? /*
???? *?第一種,函數即類,利用prototype來模擬對象的方法,簡單 ,不包括繼承
???? */
??????? //------------------------------------------------------
??????? var myclass = function () {
??????????? this.initialize.apply(this, arguments);
????????? }
??????? myclass.prototype = {
??????????? initialize: function (a, b) {
??????????????? this.id = a;
??????????????? this.name = b;
??????????? },
??????????? speak: function () { alert(this.name); }
??????? };

??????? var user = new myclass(1, 'yandavid')
??????? user.speak();
??????? //------------------------------------------------------

??????? /*
???????? *?第二三種,實現了簡單的繼承關系,只不過第二種用的是擴展Object的方法,第三種用的是prototype,其實都是
???????? 對原型的擴展,呵呵
???????? */

??????? //------------------------------------------------------
??????? var Class = {
??????????? create: function () {
??????????????? return function () {//實際上把所有的屬性定義到intiliaze方法(實際上是一個類)中,???
??????????????????? this.initialize.apply(this, arguments); //然后通過對象冒充方式繼承該類???
??????????????? }
??????????? }
??????? }

??????? /*
??????? 建立空類
??????? 先實例化超類,再把超類中的方法復制到子類中去,注意,實際上prototype類定義機制中并沒有直接定義
??????? 類的屬性是通過intilize方法,而且所有的方法都直接定義在prototype中,所以直接用原型鏈方式
??????? */
??????? Object.extend = function (destination, source) {
??????????? for (property in source) {
??????????????? destination[property] = source[property];
??????????? }
??????????? return destination;
?????????? }

??????? var Pirate = Class.create();
??????? Object.extend(Pirate.prototype, {
??????????? initialize: function (name) { this.name = name; },
??????????? speak: function (message) { return this.name + ':' + message + ', yarr!'; }
??????? }
);

??????? var a = new Pirate("sss");
??????? alert(a.speak("Pirate"));

??????? //------------------------------------------------------
??????? var Person = Class.create();
??????? Person.prototype = {/*把方法定義到prototype中,注意,是通過initalize方法初始化類的屬性 */
??????????? initialize: function (name) {
??????????????? alert(arguments.caller);
??????????????? this.name = name;
??????????? },
??????????? say: function (message) {
??????????????? return this.name + ': ' + message;
??????????? }
??????? };
??????? var guy = new Person('Miro');
??????? alert(guy.say('hi'));
??????? //------------------------------------------------------


??? </script>

總結

以上是生活随笔為你收集整理的javascript面象对象编程的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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