Re: [問題] 怎麼forin出class的function name?
※ 引述《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() {}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.90.184
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1521303930.A.162.html
※ 編輯: jackblack (220.133.90.184), 03/18/2018 00:29:59
推
03/27 10:17,
6年前
, 1F
03/27 10:17, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章