gpt4 book ai didi

javascript - 我可以声明一个可以从任何对象内调用的函数吗?

转载 作者:行者123 更新时间:2023-12-02 15:21:57 24 4
gpt4 key购买 nike

我正在尝试创建一个函数,例如:

function logType()
{
console.log(typeof (this))
}

我想对任何类型的任何变量进行强制转换

var a = function() { return 1; }
var b = 4;
var c = "hello"

a.logType() // logs in console : "function"
b.logType() // logs in console : "number"
c.logType() // logs in console : "string"

(当然这是一个例子)

有什么可能吗?

最佳答案

您可以使用call ,并稍微更改函数,否则大多数检查都会返回“object”:

function logType() {
var type = ({}).toString.call(this).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
console.log(type);
}

var a = function() { return 1; }
var b = 4;
var c = "hello"

logType.call(a) // function
logType.call(b) // number
logType.call(c) // string

DEMO

编辑

如果你想改变原型(prototype),你可以这样做:

if (!('logType' in Object.prototype)) {
Object.defineProperty(Object.prototype, 'logType', {
value: function () {
var type = ({}).toString.call(this).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
console.log(type);
}
});
}

a.logType() // function
b.logType() // number
c.logType() // string

DEMO

关于javascript - 我可以声明一个可以从任何对象内调用的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33972475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com