如果我有课:
class Haha
constructor: (@lolAmount = 1) ->
alert @lolAmount
Run Code Online (Sandbox Code Playgroud)
我想检查对象是否属于正确的类,使用它总是安全的constructor.name:
haha = new Haha()
unless haha.constructor.name is 'Haha'
throw Error 'Wrong type'
Run Code Online (Sandbox Code Playgroud)
或者它是否更好用instanceof:
haha = new Haha()
unless haha instanceof Haha
throw Error 'Wrong type'
Run Code Online (Sandbox Code Playgroud)
我有一个论点instanceof是使用时extends:
class BigHaha extends Haha
bigHaha = new BigHaha
console.log bigHaha instanceof Haha #true
Run Code Online (Sandbox Code Playgroud)
但是作为一个JavaScript运算符是多么安全 - 我觉得我应该对它持怀疑态度.
另一方面,constructor.name很明显发生了什么.是否保证constructor.name将在所有对象上设置?
谢谢你的任何信息.
mu *_*ort 17
首先,constructor也是直接的JavaScript:
返回对创建实例原型的Object函数的引用.
所以,当你说o.constructor,你真的在做直接的JavaScript时,constructorCoffeeScript对象初始化函数的名称是另一回事.
所以现在您可以选择使用JavaScript的constructor属性还是JavaScript的instanceof运算符.该constructor只是告诉你什么是"一流"来创建对象,instanceof而另一方面:
[...]测试一个对象在其原型链中是否具有
prototype构造函数的属性.
instanceof如果你想允许子类化,那么这是正确的选择.
| 归档时间: |
|
| 查看次数: |
8914 次 |
| 最近记录: |