摘要:我原來的寫法都是這樣后來又看到另外一種復雜一點而且看起來好像沒有必要的寫法這里的函數其實是一個制造類的函數,它返回了真正的類。感覺這樣做的好處是更好的實現了封裝。
我原來的寫法都是這樣:
function Dog(){ this.name = "hachi"; } Dog.prototype = { makeNoise:function(){ alert("wangwangwang"); } };
后來又看到另外一種復雜一點而且看起來好像沒有必要的寫法:
function Dog(){ var privateVariable = "secret"; var fn = function(){ //... } fn.prototype = { makeNoise:function(){ alert("wangwangwang"); } } return fn; }
這里的Dog函數其實是一個 制造類 的函數,它返回了真正的Dog類。
感覺這樣做的好處是更好的實現了封裝。
例如這里的privateVariable就是一個私有變量:
var d = new Dog; d.privateVariable //undefined
另外如果在第一個例子的最后加上一句:
Dog.prototype = { //e...WTF?? }
這樣Dog就不是Dog了~
后來的理解:
上面這樣新建類的方法直接重寫了prototype對象。這樣prototype原本內置的屬性就沒有了(arguments, call, apply等)。
下面這種新建類的方法好像更好一些:
var Dog = function(name){ this.name = name; var privateVariable = "you cannot see me."; this.getPrivate = function(){return privateVariable;}; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87535.html
摘要:餅狀圖將數據用切割成份的圓來展示。至于半徑,我們用寬度的一半與高度的一半的較小值,因為我們不想讓餅狀圖超出。結果看起來如下這樣繪制圓環圖我們已經看到如何創建餅狀圖。怎樣畫洞呢我們可以畫一個白色的圓在餅狀圖上。 showImg(https://segmentfault.com/img/bVObDh?w=850&h=362); 原文:https://code.tutsplus.com/zh...
摘要:若你想在諸如元素的組件上應用高級樣式或者想定制組件的行為,你就只能選擇創建自己的表單組件。我們將通過本文學習如何構建一個表單組件。 系列文章說明 原文 在許多情況下,[可用的HTML表單組件]()是不夠的。若你想在諸如元素的組件上[應用高級樣式]()、或者想定制組件的行為,你就只能選擇創建自己的表單組件。 我們將通過本文學習如何構建一個表單組件。為達到目的,我們選擇重構元素作為例子...
摘要:若你想在諸如元素的組件上應用高級樣式或者想定制組件的行為,你就只能選擇創建自己的表單組件。我們將通過本文學習如何構建一個表單組件。 系列文章說明 原文 在許多情況下,[可用的HTML表單組件]()是不夠的。若你想在諸如元素的組件上[應用高級樣式]()、或者想定制組件的行為,你就只能選擇創建自己的表單組件。 我們將通過本文學習如何構建一個表單組件。為達到目的,我們選擇重構元素作為例子...
摘要:若你想在諸如元素的組件上應用高級樣式或者想定制組件的行為,你就只能選擇創建自己的表單組件。我們將通過本文學習如何構建一個表單組件。 系列文章說明 原文 在許多情況下,[可用的HTML表單組件]()是不夠的。若你想在諸如元素的組件上[應用高級樣式]()、或者想定制組件的行為,你就只能選擇創建自己的表單組件。 我們將通過本文學習如何構建一個表單組件。為達到目的,我們選擇重構元素作為例子...
閱讀 919·2021-11-25 09:43
閱讀 1290·2021-11-17 09:33
閱讀 3005·2019-08-30 15:44
閱讀 3308·2019-08-29 17:16
閱讀 476·2019-08-28 18:20
閱讀 1631·2019-08-26 13:54
閱讀 551·2019-08-26 12:14
閱讀 2172·2019-08-26 12:14