Javascript类、构造函数和种子值
Javascript class, constructor and seed value
以下问题的帮助将帮助我着手澄清许多疑问。到目前为止,我读到我可以通过函数语句在JS中拥有类,并使用JSON表示法来保存对象值。因此,在下面的代码中
- 如何编写包含一些形状值的testData变量
-
如何从testData初始化Shape对象。我可以通过分配每个成员来创建对象
var obj = { x: testData[i].x, y: testData[i].y, ... };
这是正确的方法吗,或者我们可以使用这里描述的构造函数吗
var testData = [ {}, {} ]
//Shape class
var Shape = function(x, y, w, h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.calculateArea = function() {
alert("Area..");
};
func test() {
var arr = [];
for (var i=0,l=testData.length; i<l; i++) {
var s = testData[i];
var obj = // how to construct Shape object here through constructor
};
arr.push(obj);
}
您可以使用new
关键字构造一个新对象(在本例中为Shape
(。所以你会使用:
var obj = new Shape(testData[i].x, testData[i].y, testData[i].w, testData[i].h);
假设您需要将testData作为JSON从服务器等传输。
testData = [{ x: 1, y: 1, w: 1, h: 1}, ...]
然后,正如@digitalFish建议的那样,您可以通过从每个测试数据元素创建Shape对象
var obj = new Shape(s.x, s.y, s.w, s.h);
arr.push(obj);
new
运算符允许您通过其构造函数实例化对象。
var circle = new Shape(x, y, width, height);
此外,它不被称为JSON表示法(这将是JavaScript对象表示法(,它被称为对象文字表示法。
当需要.apply时,新运算符在某些边缘情况下可能会导致问题。我相信最好的方法如下。这也是一个小DRYer,因为你不会在整个过程中重复"这个"。
var createShape = function(x, y, w, h) {
return {
x: x,
y: y,
w: w,
h: h,
calculateArea: function() {
alert("Area..");
}
};
};
var a = createShape(1,2,3,4);
var b = createShape(4,3,2,1);
console.log(a, b);
相关文章:
- ES6构造函数返回基类的实例
- 使用Google Visualization动态调用构造函数
- javascript中对象构造函数中的var属性与this.properties
- 理解typescript中的构造函数接口
- 为什么构造函数不是构造函数
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 拦截对构造函数的调用
- 使用闭包共享构造函数参数
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 如何使用此从对象访问构造函数
- Javascript:为什么是构造函数's __proto__属性Empty(){}
- 当一个重要的构造函数参数丢失时应该发生什么
- Chrome Javascript日期构造函数错误
- 如何使用构造函数's的输出,以便将值插入到对象中
- 为什么在调用父构造函数时在[]中发送数据
- 构造函数函数闭包变量
- ES6类是否与构造函数相同
- 构造函数中的事件处理程序与构造函数外的事件处理函数的行为不同
- Javascript类、构造函数和种子值