在类中转换对象
Javascript - transform object in class
我是JS的新手,我习惯了传统的面向对象语言,所以我很难让一些事情正常工作。
下面是我的例子:
var myObject = {
prop:'something';
callme:function () {
console.log('you called me');
}
}
firstObj = myObject;
firstObj.prop1 = 'new thing';
secondObj = myObject;
secondObj.prop1 = 'second thing';
显然'secondObj'覆盖了'fristObj'之前做的。我如何转换'myObject'对象,使它可以像一个类一样工作,所以我可以创建它的单独的新实例?
谢谢!
要在javascript中创建一个'class',你需要创建一个函数,按照惯例它的第一个字符大写。
function MyClass() { }
var obj = new MyClass();
要将方法附加到此,请将其添加到MyClass
的prototype
。
MyClass.prototype.callme = function () {
console.log('you called me');
}
要添加属性,使用this
来引用这个类的实例。
function MyClass() {
this.prop = 'something';
}
所以所有在一起:
function MyClass() {
this.prop = 'something';
}
MyClass.prototype.callme = function () {
console.log('you called me');
}
// Remember to use var to declare variables (or they are global)
var firstObj = new MyClass();
firstObj.prop = 'new thing';
var secondObj = new MyClass();
secondObj.prop = 'second thing';
有一种JS编程风格,你只需要创建对象和返回对象的函数。在您的示例中,将myObject
转换为返回散列的函数。每次调用它都会返回一个新的。
var myObject = function() {
return {
prop: 'something';
callme: function () {
console.log('you called me and prop is', this.prop);
}
};
}
firstObj = myObject();
firstObj.prop1 = 'new thing';
firstObj.callme();
secondObj = myObject();
secondObj.prop1 = 'second thing';
secondObj.callme();
除了你已经得到的两个很好的答案,我想指出的是,如果你准备使用边缘的东西,ES6,下一个JavaScript规范,包括类。
使用像babel这样的转译器,你已经可以编写ES6代码,然后编译它,使它可以在所有浏览器上运行。它的工作效果非常好,特别是当与webpack等工具结合使用时,这些工具可以使流程自动化,并培养出越来越多的行家。这是未来,显然是更糟糕的尝试(类只是冰山一角)。
你可以在这里阅读更多关于ES6类的信息。下面是他们给出的一个例子:
class Polygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
get area() {
return this.calcArea()
}
calcArea() {
return this.height * this.width;
}
}
对实际问题的理论回答。在面向对象方面,JavaScript比大多数当前的面向对象语言更传统(例如SmallTalk——JavaScript的祖先之一)。它是基于原型的,这意味着对象从其他对象继承。为了典型的OOP类模仿,构造函数是一个令人不快的遗留(也称为"经典继承")(在某种程度上,class
只是最流行的OOP中对象的结构,典型的JavaScript对象是其他对象的结构)。类似的例子可以是Io语言(为了简单而给出)。在我看来,没有必要像class
这样单独的物体织物。
- 如何在Javascript中将JSon对象转换为数组
- 如何将TypeScript对象转换为普通对象
- JavaScript代码问题:我正在将对象转换为数组
- 如何将对象转换为数组
- JS-如何将图像对象转换为灰度并显示
- 如何将javascript对象转换为json
- 将Java对象转换为JSON
- Undercore将对象转换为数组并按关键字名称排序
- Javascript,简化了对象转换
- Mongo-JS-如何将BSON/JSON对象转换为XML
- 将一个对象转换为一个单键对象数组(带下划线?)
- 如何将一个对象转换为数组对象
- 如何将对象转换为对象数组javascript
- 将 JSON 对象转换为 JSON 树
- 将主干集合对象转换为其原始类型
- 将 JSON 对象转换为序列化字符串以进行服务器端处理
- 将 JavaScript 对象转换为其他格式
- Angularjs:将对象转换为数组
- 如何将数组的对象转换为对象
- JavaScript 中的对象转换