无法获取Javascript数组";包括「;在字符串原型中工作

无法获取Javascript数组";包括「;在字符串原型中工作,javascript,Javascript,当我在字符串原型中使用Javascript数组“includes”函数时,当我期望它返回“true”时,函数返回“false”——你知道为什么吗 String.prototype.isIn = function (...constants) { var _this = this; //safety measure console.log("_this = " + _this); console.log("constants = " + constants); co

当我在字符串原型中使用Javascript数组“includes”函数时,当我期望它返回“true”时,函数返回“false”——你知道为什么吗

String.prototype.isIn = function (...constants) {
    var _this = this; //safety measure
    console.log("_this = " + _this);
    console.log("constants = " + constants);
    console.log("constants[1] = " + constants[1]);
    console.log("return value = " + constants.includes(_this));
    return constants.includes(_this);
}

console.log("'isIn' result = " + 'dog'.isIn('cat', 'dog', 'bat')); // why is this not "true"?

console.log("'includes' result = " + ['cat', 'dog', 'bat'].includes('dog')); // true, as expected
我已经尝试过Chrome版本70.0.3538.110(官方版本)(64位)脚本编辑器,我建议使用nodejs v8.12.0this,因为
this
包含原型属性,但您需要使用
includes
检查的原语值(严格检查)

String.prototype.isIn=函数(…常量){
返回常量.includes(this.valueOf());
};
变量pets=[“猫”、“狗”、“蝙蝠”];
console.log(“'isIn'result=“+'dog'.isIn('cat','dog','bat'));//为什么这不是“真的”
我建议使用
this
,因为
this
包含原型属性,但您需要使用
includes检查的原语值(严格检查)

String.prototype.isIn=函数(…常量){
返回常量.includes(this.valueOf());
};
变量pets=[“猫”、“狗”、“蝙蝠”];

console.log(“'isIn'result=“+'dog'.isIn('cat','dog','bat'));//为什么这不是“真的”
切换您的日志语句,以便它们输出实际对象,问题就会变得更加明显<代码>控制台.log(“\u this=”,\u this)输出
字符串{“dog”}
String
对象不等于普通的旧字符串文字。谢谢-更改_this赋值var _this=this.valueOf();trickAlso设置
'use strict'
是否在不使用
valueOf()
的情况下工作,如中所述。奇怪-这似乎不那么严格。切换日志记录语句,以便它们输出实际对象,问题就会变得更加明显<代码>控制台.log(“\u this=”,\u this)输出
字符串{“dog”}
String
对象不等于普通的旧字符串文字。谢谢-更改_this赋值var _this=this.valueOf();trickAlso设置
'use strict'
是否在不使用
valueOf()
的情况下工作,如中所述。奇怪-这似乎不那么严格。
toString
也可以工作-哦,我知道这可能是一样的。我想留下我的。
toString也可以工作-哦,我知道这可能是一样的。我想离开我的房间。