Re: [問題] 怎麼forin出class的function name?

作者: jackblack   2018-03-18 00:25:25
※ 引述《givemoney (香榴槤)》之銘言:
: 在ES5的時候我是這樣宣告物件的
: function a(){
: this.OuO.apply(this, arguments);
原 PO 這一行是想寫 this.OuO = this.OuO.bind(this) 嗎?
但除了是因為要刻意綁定方法的 this 外,應該都不需要再定義一次實體自己的 OuO
還是原 PO 想在初始化物件實體的時候先呼叫 OuO 做某些處理呢?
: }
: a.prototype.OuO = function(){
: }
把 OuO 方法定義在 a.prototype 上
function a 建構出來的物件實體 b 一樣可以 b.OuO()
並且 a.prototype.OuO 是 enumerable 的
也可以被 for-in 迭代出來
: var b = new a()
: for(var key in b){
: console.log(key); //OuO
: }
: 可以成功打印出OuO
這裡印出的是 a.prototype.OuO
: 但使用了ES6的Class變成
: class a{
: constructor(){ }
: OuO(){
: }
ES6 Class 定義的 method 是 non-enumerable 的
所以不能被 for-in 迭代出來
等同於 non-enumerable 版的 a.prototype.OuO
: }
: 一樣new一個a
: 但forin卻什麼都沒有
: 這問題已經煩惱我一天惹 請各位神人幫忙QQ
假如原 PO 是想刻意綁定方法的 this 而定義實體自己的 OuO
那其實也可以這樣寫:
class A {
constructor() {
this.OuO = this.OuO.bind(this)
}
OuO() {}
}
作者: wotupset (wotupset)   2018-03-27 10:17:00
OuO

Links booklink

Contact Us: admin [ a t ] ucptt.com