Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的Class关键字_Javascript_Class - Fatal编程技术网

Javascript中的Class关键字

Javascript中的Class关键字,javascript,class,Javascript,Class,根据这一点,它应该是定义类的JavaScript2.0方法。然而,我从未在实践中看到这一点。这就是问题所在。如何使用class关键字以及Javascript 1.x的工作方式有什么区别?您在实践中从未见过它,因为实际上没有任何东西支持Javascript 2.0。这个草稿来自于一个规范,它在成为草稿之外的任何东西之前就已经消亡了。您从未在实践中看到类关键字的原因是 所以从来没有进入现实世界 那么要回答您的问题,您如何使用class关键字?你不能。当然,你仍然可以使用prototype在JS中构建

根据这一点,它应该是定义类的JavaScript2.0方法。然而,我从未在实践中看到这一点。这就是问题所在。如何使用class关键字以及Javascript 1.x的工作方式有什么区别?

您在实践中从未见过它,因为实际上没有任何东西支持Javascript 2.0。这个草稿来自于一个规范,它在成为草稿之外的任何东西之前就已经消亡了。

您从未在实践中看到
关键字的原因是

所以从来没有进入现实世界


那么要回答您的问题,您如何使用
class
关键字?你不能。当然,你仍然可以使用prototype在JS中构建类

var foo = function() {
  this.hurrah = "yay!";
  return this;
}

foo.prototype.doit() {
  alert(this.hurrah);
}
如果您有Java或C#背景,下面介绍如何用JavaScript定义类

var MyClass = function (f, l){//constructor 
    //private members
    var firstName = f,
        lastName = l,
        fullName = function () { //fullName is a private function
            return firstName + " " + lastName;
        };
    return {
        //public members
        getFullName: fullName 
    };
}

var output = document.getElementById('Output'); //<div id="Output"></div>
var myName = new MyClass("First", "Last");
output.innerHTML = myName.getFullName();
var MyClass=函数(f,l){//构造函数
//私人成员
var firstName=f,
lastName=l,
fullName=function(){//fullName是一个私有函数
返回firstName+“”+lastName;
};
返回{
//公众成员
getFullName:fullName
};
}
var output=document.getElementById('output')//
var myName=新的MyClass(“第一个”、“最后一个”);
output.innerHTML=myName.getFullName();

只是为了添加ECMA5的类生成方式

请注意,它没有这样的构造函数(但如果愿意,可以触发init函数)


我知道这是一篇老文章,但从今天开始,即随着ECMAScript 6的出现,我们可以声明javascript类

语法如下所示:

class Person{
  constructor(name){
    this.name = name;
  }
  printName(){
    console.log('Name is '+this.name);
  }
}
var john = new Person('John Doe');
john.printName(); // This prints 'Name is John Doe'
有关这方面的完整指南,请参见

摘要 在
ES6
中引入了
class
关键字。
class
关键字只不过是已经存在的原型继承模式之上的语法糖。javascript中的类基本上是编写构造函数的另一种方法,可以使用它使用
new
关键字创建新对象

例子
班级人员{
建造师(姓名){
this.name=名称;
}
talk(){console.log('hi');}
}
const me=新人(“威廉”);
控制台日志(人员类型)
//logs函数,Person类只是另一个隐藏的构造函数
console.log(me.\uuu proto\uuuu==Person.prototype)
//如果为true,则类只使用构造函数使用的相同原型继承模式。

//使用new关键字创建的对象会在其上获得一个_proto______________________________________________________你的意思很像HTML5草稿,现在它实际上是一个规范好的观点-尽管HTML5最近更新了:-)谢谢你的评论。有趣的是。Visual studio 2008在编写JavaScript文件时将其识别为有效关键字。@Validimir-VS2008可能会识别class关键字,因为您可以在JScript中使用它。class(以及许多其他java关键字)是保留字,因此理论上,该语言可以在不破坏现有程序的情况下添加支持。在上有一个完整的列表。您现在可以使用@AkhilArjun的帖子中提到的
class
关键字starting ECMA6(又名ECMA 2015)。请参考@AkhilArjun的答案。我觉得他的答案更有用。你拥有的不是一个很好的类,它只是一个对象。要将其称为类,必须有一个不返回任何内容的构造函数,以及将内容附加到其原型的能力,并且还应该有一种从该类继承的方法。无法正确继承此对象,因为它没有原型链。请注意,这种方法对内存不友好,因为它将其方法存储在闭包中,而不是存储在原型上,它确实隐藏了标准JS原型类系统没有的私有成员。这个问题专门询问类关键字,而不是如何编写没有关键字的类。这应该是我们目前生活的现代JS世界中公认的答案。这应该是我们目前生活的现代JS世界中公认的答案。
class Person{
  constructor(name){
    this.name = name;
  }
  printName(){
    console.log('Name is '+this.name);
  }
}
var john = new Person('John Doe');
john.printName(); // This prints 'Name is John Doe'