在以下代码中,如何获取yourModel.currentTime.bind = { [weak self] time in
self?.timeLabel.text = time
}
关键字以绑定到this
?
Square
我知道以后可以使用Square.prototype.is = {
king: function () { this.piece === "K" }
queen: function () { this.piece === "Q" }
...
};
/ call
,但要点是要从中获取
apply
到
this.isKing()
使其更具可读性(还将方法分组在一起)
this.is.king()
似乎向后退一步。
答案 0 :(得分:1)
我建议使用ES6 arrow functions。现在,所有主要浏览器都支持该语法。使用箭头功能使我们可以利用外部范围的https://developer.chrome.com/extensions/manifest
。
使用this
的示例:
Class
如果确定要使用ES5语法:
class Square {
constructor(){
this.piece = null;
this.is = {
king: () => this.piece === "K",
queen: () => this.piece === "Q"
}
}
};
const square = new Square();
square.piece = 'K';
console.log(square.is.king());
console.log(square.is.queen());
最后,按照@Bergi的评论,这是另一种使用箭头函数和对象而不使用var Square = function Square() {
var _this = this;
this.piece = null;
this.is = {
king: function() { return _this.piece === "K" },
queen: function() { return _this.piece === "Q" }
};
};
var square = new Square();
square.piece = 'K';
console.log(square.is.king());
console.log(square.is.queen());
的方法。
Class
答案 1 :(得分:1)
我知道这并不能直接回答您的问题,但是第三方库中常见的is
函数通常具有以下签名:is(type)
。
您可以这样写:
square.prototype.is = function(type) {
switch (String(type).toLowerCase()) {
case "king": return this.piece === "K";
case "queen": return this.piece === "Q";
default: return false;
}
}
假设类型为String
。但是它可以在Number
中定义的Object
充当Enum
。
我希望您不要考虑这种偏离主题的问题,因为它可以作为考虑其他方式的解决方案:)