从函数访问var(Struct)

时间:2015-10-21 23:34:21

标签: javascript jquery css

我正在尝试创建一个“struct”并以与在任何其他编程语言(即Swift)中使用相同的方式使用它。这是“结构”:

var myStruct = function (prop1) {
    this.prop1 = 30;
}

然后我像这样访问prop1

var someVar = myStruct.prop1

由于某些原因不起作用。我做错了什么,我该如何解决这个问题?

这是JSFiddle,这是完整的代码:

$(document).ready(function(){
    var myStruct = function (prop1) {
		this.prop1 = 30;
	}
    
    $("button").click(function(){
       	$("p").css({"width": myStruct.prop1, "font-size": "200%"});
    });
});
<body>

<h2>This is a heading</h2>

<p style="background-color:#ff0000">This is a paragraph.</p>
<p style="background-color:#00ff00">This is a paragraph.</p>
<p style="background-color:#0000ff">This is a paragraph.</p>

<p>This is a paragraph.</p>

<button>Set multiple styles for p</button>

3 个答案:

答案 0 :(得分:3)

要使用构造函数创建对象,请使用:

function MyClass(prop) {
    this.prop = prop;
}

要创建该类型的对象,请使用:

var obj = new MyClass(30);

要引用对象属性,请使用:

console.log(obj.prop);

由于 30 已传入对象,因此this.prop设置为 30 ,该值将显示在日志中。

感谢@Tiny_Giant的澄清。

答案 1 :(得分:2)

您所做的是Object Constructor,要从构造函数中获取对象,您将使用new关键字来创建对象的新实例。但是,除非您需要创建对象的多个实例,否则不应该使用它。

$(document).ready(function(){
    var myStruct = function () {
        this.prop1 = 30;
    }

    $("button").click(function(){
        $("p").css({"width": new myStruct().prop1, "font-size": "200%"});
    });
});

如果您不需要拥有对象的单独实例,则可以使用以下示例中演示的语法创建新的Object。

注意:

  • 此语法允许您以示例中尝试的方式访问属性。
  • 您已使用此语法将对象传递给下面示例中的$('p').css()方法。
  • 使用此语法声明的属性应使用逗号而不是分号分隔,这与使用数组语法时相同。
  • 任何名称中包含特殊字符的对象属性必须用引号括起来,并且只能使用object["property"]表示法进行访问。

&#13;
&#13;
$(document).ready(function(){
    var myStruct = {
        width: '30px',
        fontsize: '200%'
    }
    
    $("button").click(function(){
       	$("p").css({
            "width": myStruct.width, 
            "font-size": myStruct.fontsize
        });
    });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>

<h2>This is a heading</h2>

<p style="background-color:#ff0000">This is a paragraph.</p>
<p style="background-color:#00ff00">This is a paragraph.</p>
<p style="background-color:#0000ff">This is a paragraph.</p>

<p>This is a paragraph.</p>

<button>Set multiple styles for p</button>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

这是类声明:

var myStruct = function (prop1) {
    this.prop1 = 30;
}

这是类实现:

var obj = new myStruct(1);