JavaScript中是否可以有对象扩展?例如
Extensions.js
function any.isNullOrEmpty() {
if (this == null || this == "") {
return true
}
return false
}
app.js
var x = ""
console.log(x.isNullOrEmpty()) //should log true
这可能吗?我该怎么做?
最佳答案
您可以将方法添加到Object
原型中,并使用valueOf
方法获取字符串的值:
...但是,因为null
是无法使用方法的原语,所以我想到的将目标设为null
的唯一方法是使用call
,apply
或bind
。
但是您永远都不会在生产代码中执行此操作,因为不鼓励修改内置对象的原型。
'use strict' // important for the use of `call` and `null`
Object.prototype.isNullOrEmpty = function() { return this === null || this.valueOf() === '' }
const s = ''
console.log(s.isNullOrEmpty())
const t = null
console.log(Object.prototype.isNullOrEmpty.call(t))