①字面量的方法:建立乙個物件,該物件有乙個屬性username,屬性值是周杰倫,並將該物件賦值給obj
因為物件都是類的例項化
const obj =
console.
log(obj)
//
② 通過new object()來建立
const obj1 =
newobject()
; obj1.username =
"laoli"
; console.
log(obj1)
;//
③ 通過建構函式來建立。
function
box(
)const box =
newbox()
;console.
log(box);//
/**************建構函式執行流程******************
* 1、當new box()時,會隱匿有乙個new object()的行為
* 2、會將new object的結果賦值給this
* 3、執行建構函式當中的語句
* 4、隱匿將this進行返回*/
原型, 是函式物件下的乙個屬性,本身也是乙個物件。
原型物件:prototype 例項物件:this
原型的特點即是共享。----->節省記憶體
function
box(
)
在原型物件中新增屬性:
box.prototype.age =41;
box.prototype.
run=
function
(n)box.prototype.arr =[1
,2,3
,4];
//建立建構函式
const box =
newbox()
;const box1 =
newbox()
;//通過建構函式新增屬性
box.__proto__.*** =
"男";
console.
log(box === box1)
;// false
console.
log(box.__proto__ === box.prototype)
;// true
console.
log(box1.__proto__ === box.prototype)
;// true console.log(box.__proto__ === box1.__proto__);// true
box.__proto__.age =15;
//15
//****************************原型鏈**************************
console.
log(box.__proto__ === box.prototype)
;// true
console.
log(box.prototype.__proto__ === object.prototype)
;// true
console.
log(object.prototype.__proto__ ===
null);
// true
function
box(
)box.prototype.username =
"周杰倫"
;const box =
newbox()
;// 如果例項 當中存在username,則用例項當中的。
// 如果例項物件當中沒有,則會去原型物件中查詢。
console.
log(box.username)
;//周杰倫
1, 判斷box物件下是否擁有username屬性。(不管是在例項還是在原型。)
console.
log(
"username"
in box)
;//true
//表示username可能在例項或者原型中。即usernname一定存在。
2,判斷例項物件當中是否包含username
console.
log(box.
hasownproperty
("username"))
;// false
//如果滿足1,同時2為false,則為例項下不存在,屬性存在於原型中。需要拿出來必須到物件的原型中獲取
class —> 建構函式.class的本質是乙個函式。
constructor 內的this 例項物件
constructor之外定義的,都存放在原型當中
披著class的建構函式。
class
boxrun()
}console.
log(typeof box)
// function---- class的本質是乙個函式
const box =
newbox()
;console.
log(box.__proto__ === box.prototype)
;//true
box.__proto__.
run();
//周杰倫喜歡昆凌 box{}
console.
log(box.__proto__.username)
;// undefined
//這是因為在原型中沒有該屬性,我們在原型中加入屬性,看看效果
box._proto_.username =
'七里香'
; = '夜曲'
console.
log(box._proto_.username)
//七里香
//夜曲
物件及原型鏈
instanceof的原理 new運算子 類繼承和原型繼承的區別 原型鏈是物件導向的基礎,主要從以下幾方面入手 字面量var obj11 var obj12 new object name 莉莉 內建物件的建構函式 以上兩種寫法得到的結果一樣,第一種是字面量方式,第二種是內建的建構函式。通過建構函式...
物件導向 建立物件 原型鏈 繼承
字面量建立物件 使用json形式建立物件,適用於建立單個物件.json js物件表示法,由鍵值對組成,每乙個鍵值對之間使用冒號連線,每一對鍵值對之間使用逗號隔開.var obj console.log obj console.log typeof obj object console.log obj...
弄懂js原型鏈 物件建立
第一種方式 字面量 var o1 var o2 newobject 第二種方式 建構函式 varm function name var o3 newm o3 第三種方式 object.create var p var o4 object.create p m.prototype.say functi...