Object.setPrototypeOf()可以在創建對象以后去改變對象的prototype
例子:這里定義了兩個對象:
let breakfast = { getDrink(){ return 'tea' } } let dinner ={ getDrink(){ return 'bear' } }
下面使用Object.create()方法創建一個基於breakfast的對象sunday,可以看到sunday的getDrink()方法返回的就是breakfast對象里的getDrink()方法返回的字符串
let sunday = Object.create(breakfast) console.log(sunday.getDrink()); //tea //判斷sunday這個對象的prototype是否等於breakfast console.log(Object.getPrototypeOf(sunday)===breakfast) //true
重新設置一下sunday的prototype,用的是Object.setPrototypeOf(),第一個參數是要設置的對象sunday,第二個參數是要設置成的那個prototype對象dinner,返回sunday.getDrink()
Object.setPrototypeOf(sunday,dinner); console.log(sunday.getDrink()); //bear console.log(Object.getPrototypeOf(sunday)=== dinner); //true