創建一個對象
~~~
function Person() {
}
var person=new Person();
person.name='zhnaglei'
console.log(person.name)
~~~
每個函數都要一個prototype
~~~
function Person() {
}
Person.prototype.name='zhanglei'
var person1=new Person();
var person2=new Person();
console.log(person1.name)
console.log(person2.name)
~~~
函數的 prototype 屬性指向了一個對象,這個對象正是調用該構造函數而創建的實例的原型,也就是這個例子中的 person1 和 person2 的原型。
每一個JavaScript對象在創建的時候就會與之關聯另一個對象,這個對象就是我們所說的原型,每一個原型都會從原型繼承屬性
~~~
function Person() {
}
var person = new Person();
console.log(person.__proto__ === Person.prototype);
~~~
每一個原型都有一個construct屬性指向關聯的夠著函數
~~~
function Person() {
}
console.log(Person===Person.prototype.constructor)
~~~
實例和原型的關系
~~~
function Person() {
}
Person.prototype.name='kevin'
var person=new Person();
person.name='zhanglei'
console.info(person.name)
delete person.name
console.info(person.name)
~~~
當讀取實例屬性時,如果找不到,就會查找與對象關聯的原型中的屬性,如果還是查不到就去找原型的原型,一直找到頂層為止。
繼承意味著復制操作,然而JavaScript默認并不會復制對象的屬性,相反, JavaScript只是在兩個對象之間創建一個關聯,這樣,一個對象就可以通過委托訪問另一個屬性和函數,所以與其叫繼承,委托的說法反而更準確些。
- 代碼片段
- 1.格式化銀行卡
- 2.將HTML內容保存為圖片
- 3.mui代碼片段
- 1.粘貼內容
- 2.禁止tab左右滑動
- 3.判斷網絡狀態
- 4.將圖片壓縮轉換為base64
- 5.雙擊退出應用
- 6.二維碼掃描
- 7.支持豎屏
- 4.時間戳格式化
- 5.字符串操作
- 1.去除字符串中的空格
- 2.計算字符串的長度
- 3.字符串轉化
- 4. 復制字符串
- 5.替換字符串
- 6.字符串替換為 *
- 7.字符串檢測
- 8 .生成字符串
- 9.檢測一個字符在字符串中出現的次數
- 6.檢測密碼的等級強度
- 7.數組操作
- 1.數組去重函數
- 2.打亂數組的順序
- 3.求數組的最大值和最小值
- 4.求一個數組的和 基于數字數組
- 5.求一個數組的平均數 基于數字數組
- 6. 隨機獲取數組中的一個元素
- 7.獲取一個字符在一個字符串中出現的次數
- 8.截取數組長度
- 9.刪除值為'val'的數組元素
- 8.cookie操作
- 9.格式化對象 清除對象中的空和null
- 10. 將數組的人民幣轉換為大寫
- 11.URL操作
- 12.返回兩個數之間的隨機數
- 13.隨機產生顏色值
- 14.獲取到截止時間的時間
- 15.文件類型檢測
- 16.判斷是否是安卓或蘋果
- 17.給文字加下劃線
- 源碼分析
- jQuery 1.2.6 源碼閱讀解讀
- webpack插件總結
- css雜記
- css樣式初始化
- JavaScript深入
- 1.JavaScript深入之從原型到原型鏈
- 2.JavaScript深入之詞法作用域和動態作用域
- 3.JavaScript深入之執行上下文棧