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的唯一方法是使用callapplybind

但是您永远都不会在生产代码中执行此操作,因为不鼓励修改内置对象的原型。



'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))

07-28 09:53