我的代碼如下,
class myClass
{
constructor()
{
this.memberVar1="";
this.memberVar2="";
}
memberFunction1()
{
// memberFunction1 code
}
}
var myObj = {
objVar1 : someJsonObject,
objVar2 : new myClass()
}
而不是像呼叫 memberFunction 和 memberVar1,memberVar2
myObj.objVar2.memberVar1;
myObj.objVar2.memberFunction1();
我想這樣稱呼他們
myObj.memberVar1;
myObj.memberFunction1();
有什么辦法可以重組myObj來實作這一目標?
提前致謝
uj5u.com熱心網友回復:
函式是 Javascript 中的第一類物件,而 Javascript 類的成員只是一個物件,因此沒有什么可以阻止您將參考設定為myObj.memberFunction1您喜歡的任何內容,包括someJsonObject.memberFunction1,但是您需要注意 的行為this會有所不同關于如何設定參考。memberFunction這對于根據背景關系使您的行為正確可能很重要。
class myClass
{
constructor()
{
this.memberVar1="";
this.memberVar2="";
}
memberFunction1()
{
// memberFunction1 code
}
}
let someJsonObject = {
memberFunction1: function(source) {
if (this === myObj) { console.log(`${source}: "this" is myObj`) }
else if (this === someJsonObject) { console.log(`${source}: "this" is someJsonObject`) }
else { console.log('JavaScript interpreter is insane') }
}
}
var myObj = {
objVar1 : someJsonObject,
objVar2 : new myClass(),
memberFunction1: someJsonObject.memberFunction1 // the assignment will cause "this" to point to myObj
}
console.log('==== setting the reference (changes this) ====')
myObj.memberFunction1('myObj')
someJsonObject.memberFunction1('someJsonObject')
myObj.objVar1.memberFunction1('myObj.objVar1') // myObj.objVar1 is === someJsonObject
myObj.keepThis = myObj.memberFunction1 // You can hang onto the "myObj" referenced version of the function if you want
console.log('==== binding to someJsonObject ====')
myObj.memberFunction1 = myObj.memberFunction1.bind(someJsonObject) // using bind will make "this" point to whatever you like (i.e someJsonObject)
myObj.memberFunction1('myObj')
someJsonObject.memberFunction1('someJsonObject')
myObj.objVar1.memberFunction1('myObj.objVar1')
myObj.keepThis('myObj.keepThis')
uj5u.com熱心網友回復:
這是一種方法:
const someObj = new myClass();
var myObj = {
objVar1 : {},
memberFunction1 : someObj.memberFunction1
}
然后像你想要的那樣呼叫它:
myObj.memberFunction1()
編輯:
如果要合并 N 個成員,可以像這樣使用 Object.create:
const instance = new myClass();
const myObj = Object.create(instance);
myObj.memberFunction1()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504495.html
標籤:javascript json 功能 班级 目的
上一篇:獲取嵌套物件值
