无法获取Javascript数组";包括「;在字符串原型中工作
当我在字符串原型中使用Javascript数组“includes”函数时,当我期望它返回“true”时,函数返回“false”——你知道为什么吗无法获取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
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也可以工作-哦,我知道这可能是一样的。我想离开我的房间。