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