const a = Object.create({
localVar: 1
count: () => {
this.localVar = this.localVar + 1
console.log("localVar now is " + this.localVar)
}
})
// 以上等價於
function object() {
// 建構子
this.localVal = 1
this.count = () => {
this.localVal = this.localVal + 1
console.log("localVar now is " + this.localVar)
}
}
const a = new object()
/**
* 2/13更新: 其實以上並不完全等價,object.create是產生一個物件,並且繼承參數1中的物件原型(不過一般來說,原型不太會有狀態(變數)
* 因為原型是所有繼承的物件共用)。
* 而使用function 並 new出來,是產生一個object,其中包含constructor中的方法和參數。
* object.create應該是等價於 object.prototype = // Object.create(<object>)的<object>
*
* 另外,上一版的程式不能run,因為Object是js中物件的建構子,override就爆了。我原本實驗完
* 以為該這樣概念比較好懂。。。
**/
// 直接宣告物件會有問題,因為this指向全域物件(window)
const a = {
// 無法access
localVar: 1
count: () => {
// 會找不到this.localVal,因為在window中沒被定義過
this.localVar = this.localVar + 1
console.log("localVar now is " + this.localVar)
}
}
Last active
February 14, 2020 02:02
-
-
Save idhowardgj94/344ce476f2f9fedf5b9225c6bc4776a7 to your computer and use it in GitHub Desktop.
javascript
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://codesandbox.io/s/elated-mayer-5jw7z