Javascript 面向对象编程的正确方法
我有点困惑 我发现javascript中有很多方法可以实现OOP 你能告诉我有什么不同吗?哪一个是正确的Javascript 面向对象编程的正确方法,javascript,oop,Javascript,Oop,我有点困惑 我发现javascript中有很多方法可以实现OOP 你能告诉我有什么不同吗?哪一个是正确的 class Dog{ bark(){} } var Dog = { bark : function(){} } var Dog = function(){ this.bark = function(){} } js中的是类,但仍然是为浏览器引入的,第二个是使对象像数组一样,最后一个是oop,从某种意义上说……如果你知道oop使用的是typescript,那么对我来说就是jav
class Dog{
bark(){}
}
var Dog = {
bark : function(){}
}
var Dog = function(){
this.bark = function(){}
}
js中的是类,但仍然是为浏览器引入的,第二个是使对象像数组一样,最后一个是oop,从某种意义上说……如果你知道oop使用的是typescript,那么对我来说就是javascript oop
var Dog = function(){ this.bark = function(){} }
如果您知道您有ES6功能可用,我会选择第一个选项:
class Dog {
bark() {
// code here
}
}
你提到的其他方法也有缺陷
- 第二种方法创建对象实例,而不是类
- 第三种方法是可以接受的,但在大多数情况下,最好将该方法附加到原型上
function Dog() {
// init
}
Dog.prototype.bark = function() {
// code here
};
编辑:
正如其他人指出的,您的问题在某种程度上是基于情境和/或观点的。也就是说,不同的情况可能需要不同的方法,不同的开发人员会根据他们的个人喜好给出不同的答案。然而,我上面给出的答案是一般JS社区已经同意的,所以我建议您在大多数情况下使用它们
var object = new Object();
以上所有方法都是创建对象文字的正确方法。下面是使用对象文字的一些好处
哪一个是正确的
正确的目的是什么?这个问题太宽泛了——你想实现什么?我想这就像问GNUCCC的哪个版本是最好的。当然,最新的稳定版本。所以class Dog
它是第一个(class Dog
)是ES6。因此,如果您在支持ES6的环境中运行代码,那么无论如何都应该使用它。但是,如果您想在不支持它的浏览器(或其他环境,如旧的Node.js安装)中直接运行代码,那么当然您必须使用其他变体之一(实际上还有很多变体)。请查看是的,但这是lib,我的意思是js basict这不是库,它是JavaScript的下一个版本,已在.对象中实现。创建