[英]Can we have object as a function in OOJS?
我在過去的采訪中曾遇到上述問題。我說不。我對此表示懷疑。我不知道我們如何真正地將對象用作函數?
是的,我們可以,因為每個function
也是JS中的一個object
。 但反之亦然
我有一個function
,也有一個property
。 所以我可以調用它並使用它的屬性
function hello(){ console.log('Hello'); } hello.someProp = 'Some Prop'; hello(); console.log(hello.someProp);
我想詳細說明一下。
JavaScript真正面向對象的原因是,每當您聲明一個函數時,它都不過是JavaScript 內置對象的新實例(稱為Function) 。
例如,當您聲明var a = {}時, 對象構造函數將創建一個新對象。 同樣,每當您聲明諸如函數SomFucn(){}之類的函數時,函數構造函數都會創建新函數。
是的,我們可以將函數用作對象,因為反之亦然。
檢出以下代碼。 工作小提琴在這里https://jsfiddle.net/95ejaydL/ (檢查控制台);
console.log(typeof(Object));
console.log(typeof(Function));
Function.prototype.sayHello = "Hello function property";
Object.prototype.sayHello = "Hello Object";
var a = {};
console.log(a.sayHello);
function Hello(){
console.log("Hello from method");
}
Hello();
console.log(Hello.sayHello);
a();
讓我知道這是否有用。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.