【问题标题】:How to detect what class an object in an array is in JavaScript如何检测数组中的对象在 JavaScript 中是什么类
【发布时间】:2013-05-08 22:52:16
【问题描述】:

我正在使用 JavaScript 开发一个高度面向对象的项目。我有一个不同类的对象数组 [],我正在遍历它,我想检查数组 [i] 中对象的类。我有什么办法可以检测到这一点吗?这可能有助于您理解我的意思:

var pieces = [new Pawn(), new Rook(), new Knight()];
for(var i = 0; i < pieces.length; i++){
    if(pieces[i] == Rook){
        //Do something with the rook
    }
}

这是我需要做的一般想法,但 if 条件是棘手的一点。如何检测pieces[i]处的元素类别?我的后备解决方案是给每个对象一个“类型”字段。

【问题讨论】:

    标签: javascript oop class iteration


    【解决方案1】:

    这可能取决于您如何设置继承,但通常您使用instanceof operator 进行检查:

    if(pieces[i] instanceof Rook) // ...
    

    【讨论】:

    • 小心instanceof,它所做的只是检查Rook.prototype 是否在pieces[i] 的私有[[prototype]] 链上。这可能没问题,具体取决于您实现继承的方式以及您实际需要了解的内容。构造函数属性可能更合适(它是一个公共属性,因此可以在最初设置继承时设置为合适的值)。
    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2011-08-18
    • 2018-01-23
    相关资源
    最近更新 更多