gpt4 book ai didi

带有对象的 JavaScript 构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:35:33 27 4
gpt4 key购买 nike

我已经开始尝试学习如何更广泛地使用 JavaScript 对象,并且我一直在尝试用 JavaScript 编写一个对象,它允许我在初始化时设置一些构造函数参数。

我不得不说,有很多不同的 ' design patterns ' 在 JavaScript 中,我可能对语法和诸如此类的东西有点困惑。通过我的研究,我发现了各种 StackOverflow 文章,例如:

  1. JavaScript constructors using JavaScript object literal notation
  2. Constructors in JavaScript objects

我想对我的对象做的是在初始化时设置一些内部/私有(private)变量,如下所示:

<script>
var TestObj = new Dispatch( 100 );
console.log( TestObj.getConstructorValue() );
//Would Return 100.
</script>

虽然目前,对象的构建方式目前是 Test 在初始化后尝试访问它时返回 undefined:

<script>    
$(document).on('ready', function(){
var TestObj = new Dispatch( 100 );

//Set post-initialised variables & set to '5'
TestObj.setOrderNumber( 5 );

//Retrieves 5
console.log( "Accessing Property: " + TestObj.OrderNumber );

//Method for getting orderNumber Property, Returns 5
console.log( "Method for Order Number: " + TestObj.getOrderNumber() );

//Method for getting would-be constructor value
console.log( TestObj.getTest() ); //Returns Undefined
console.log( TestObj.Test ); //Returns Undefined

});
</script>

JavaScript

<script>
/**
*
**/
var Dispatch = function( Arg1 ) {

var OrderNumber;
var Test;

var setOrderNumber = function( orderNum ) {
this.OrderNumber = orderNum;
};


this.constructor = function( str ) {
this.Test = str;
};

this.constructor( Arg1 );

return {

/**
* Getter for OrderNumber
**/
getOrderNumber : function(){
return this.OrderNumber;
},

/**
* Setter for OrderNumber
**/
setOrderNumber : setOrderNumber,

/**
* Getter for Test
**/
getTest : function() {
return this.Test;
}
};

};
</script>

我的尝试(一)

我试图直接设置它:

<script>
var Dispatch = function( s ) {

/**
* Assign constructor
* to Test
**/
var Test = s;

return {
getTest : function() {
return this.Test;
}
}
};

TestObj.getTest(); //Returns undefined
</script>

我的尝试(二)

我还尝试通过稍微混合函数返回来访问变量:

<script>
var Dispatch = function( s ) {

var Test;

var getTestVar = function() {
return this.Test;
}

this.constructor = function( str ) {
this.Test = str;
};

/**
*
**/
this.constructor( s );

return {
getTest : getTestVar
};
};

TestObj.getTest(); //Returns undefined
</script>

虽然我尝试过其他方法,但如果能以书面形式了解为什么我在构造函数工作时出错的原因,那就太好了。

这是一个 jsFiddle这显示了所有这一切。很抱歉发了这么长的帖子和我对 JavaScript 对象的无知!

最佳答案

你真的混淆了很多概念。
这就是您要找的:

var Dispatch = function( s ) {
/**
* Assign constructor
* to Test
**/
this.Test = s;
this.getTest = function() {
return this.Test;
}
};

因此:

TestObj = new Dispatch(7);

将导致对象:

Dispatch {Test: 7, getTest: function}

和:

TestObj.getTest();

将返回 7。

您可以在这里查看有关构造函数的更多正确信息:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor

关于带有对象的 JavaScript 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18978964/

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