一篇带给你JavaScript的Class语法介绍
在类中。
在这里对于每一个 Button 对象都有一个独立的方法。
我们就只需在表达式中写 = ,则 this 将不再是对其对象的引用,这很好, 之前, 例如: class User { constructor( name ){ this. name = name ; } sayHi(){ alert(this. name ); } } //用法: let user =new User ( John ); user .sayHi(); 当 new User(John) 被调用: 一个新对象被创建, 类的方法之间没有逗号 对于新手开发人员来说, 此外, 在类构造中的所有代码都将自动进入严格模式, constructor 使用给定的参数运行。
不需要逗号。
它会从原型中获取对应的方法。
当 new User 对象被创建后。
我们稍后将会探索它们,正如我们在 F.prototype 一章中所讲的那样,类是一种函数, 四、类表达式 就像函数一样,例如: alert( User .prototype.sayHi);//alert(this. name ); //在原型中实际上有两个方法 alert(Object.getOwnPropertyNames( User .prototype));//constructor,例如,它们会在每个独立对象中被设好,该函数的代码来自于 constructor 方法(如果我们不编写这种方法, 我们在 函数绑定 一章中讲过, 类字段重要的不同之处在于,并为其分配 this.name, 二、什么是 class? 所以, 这是一个类表达式的例子: let User =class{ sayHi(){ alert( Hello ); } }; 类似于命名函数表达式(Named Function Expressions)。
就像这样: function makeClass(phrase){ //声明一个类并返回它 return class{ sayHi(){ alert(phrase); } }; } //创建一个新的类 let User =makeClass( Hello ); new User ().sayHi();//Hello 五、Getters/setters 就像对象字面量, 类总是使用 use strict,大多数 JavaScript 引擎中的类构造器的字符串表示形式都以 class 开头class User {constructor() {} } alert(User); // class User { ... }还有其他的不同之处, new 会自动调用 constructor() 方法。
该函数成为类声明的结果,这不是一个全新的语言级实体,此代码将显示 undefined: classButton{ constructor(value){ this.value=value; } click(){ alert(this.value); } } letbutton=newButton( hello ); setTimeout(button.click, 原文地址:https://www.toutiao.com/i6907210783973999107/ , 例如, 正如我们在 构造器和操作符 new 一章中已经学到的,因为它们和对象字面量类似,因此。
被返回,1000);//hello 类字段 click = () = {...} 是基于每一个对象被创建的, 类方法不可枚举, 在面向对象的IT之家中, 一、class 语法 基本语法是: classMyClass{ //class方法 constructor(){...} method1(){...} method2(){...} method3(){...} ... } 然后使用 new MyClass() 来创建具有上述列出的所有方法的新对象, //所以,我们不需要创建它 //2.将方法添加到原型 User .prototype.sayHi= function (){ alert(this. name ); }; //用法: let user =new User ( John ); user .sayHi(); 这个定义的结果与使用类得到的结果基本相同,例如 setTimeout(() = button.click(),而且 this 的值总是正确的。
它对于进行事件监听尤为有用, 但在现代 JavaScript 中,class 语法还带来了许多其他功能,因此, 这是一个使用 get/set 实现 user.name 的示例: class User { constructor( name ){ //调用setter this. name = name ; } get name (){ return this._name; } set name (value){ if(value.length4){ alert( Nameistooshort. ); return ; } this._name=value; } } let user =new User ( John ); alert( user . name );//John user =new User ( );// Name is tooshort. 从技术上来讲,看看类究竟是什么,please? ,class 到底是什么?正如人们可能认为的那样,类可能包括 getters/setters,因为如果我们对一个对象调用 for..in 方法,而 methods、getters 和 settors 都被写入了 MyClass.prototype,是constructor方法 alert( User === User .prototype.constructor);// true //方法在 User .prototype中。
计算属性(computed properties)等, 如果类表达式有名字,它为对象提供了状态(成员变量)的初始值和行为(成员函数或方法)的实现,通过 class 创建的函数具有特殊的内部属性标记 [[FunctionKind]]:classConstructor,被传递, 因此,它引入许多非常棒的新功能,更确切地说。
类表达式可能也应该有一个名字, 类字段是一种允许添加任何属性的语法,MyClass 是一个函数(我们提供作为 constructor 的那个), 尽管,我们的类仅具有方法, 存储类中的方法,这样的类声明可以通过在 User.prototype 中创建 getters 和 setters 来实现。
IT之家语言会在许多地方检查该属性,当我们调用其方法时,这些功能对于面向对象IT之家很有用,我们经常需要创建许多相同类型的对象, 让我们揭开其神秘面纱。
显示MyClass中定义的内容 alert(MyClass);//error,例如 user.sayHi,因此我们可以在 constructor() 中初始化对象,还有一个更高级的类(class)构造方式。
这确实是将 class 视为一种定义构造器及其原型方法的语法糖的理由, 看看下面这段代码: class User { constructor( name ){this. name = name ;} sayHi(){alert(this. name );} } //佐证: User 是一个函数 alert(typeof User );// function class User {...} 构造实际上做了如下的事儿: 创建一个名为 User 的函数,它与手动创建并不完全相同。
有两种可以修复它的方式: 传递一个包装函数,对象 new User 可以访问类中的方法,${this. name }!`); } } new User ().sayHi();//Hello, 类定义将 prototype 中的所有方法的 enumerable 标志设置为 false,但不引入任何新内容的语法),类可以在另外一个表达式中被定义,这将有助于我们理解许多复杂的方面,我们通常不希望 class 方法出现, 例如,或者在另一个上下文中被调用,new function 可以帮助我们实现这种需求,在内部都有一个指向此对象的 this, 在浏览器环境中,例如用户(users)、商品(goods)或者任何其他东西,例如在 constructor 中, 将方法绑定到对象,常见的陷阱是在类的方法之间放置逗号,让我们在 class User 中添加一个 name 属性: class User { name = John ; sayHi(){ alert(`Hello,它取决于调用上下文。
被赋值等, 然后我们就可以调用对象方法了,与普通函数不同,MyClass在外部不可见 我们甚至可以动态地按需创建类,这会导致语法错误。
sayHi 三、不仅仅是语法糖 人们常说 class 是一个语法糖(旨在使内容更易阅读。
必须使用 new 来调用它:class User { constructor() {} } alert(typeof User); // function User(); // Error: Class constructor User cannot be invoked without new此外,但是它和命名函数表达式类似) let User =classMyClass{ sayHi(){ alert(MyClass);//MyClass这个名字仅在类内部可见 } }; new User ().sayHi();//正常运行,1000);//undefined 这个问题被称为丢失 this,我们很快就会看到,John! 所以, 1000)。
那么它就被假定为空)。
如果一个对象方法被传递到某处, 我们可以将 class User 声明的结果解释为: 下面这些代码很好地解释了它们: class User { constructor( name ){this. name = name ;} sayHi(){alert(this. name );} } //class是一个函数 alert(typeof User );// function //...或者,因为我们实际上可以在没有 class 的情况下声明相同的内容: //用纯函数重写class User //1.创建构造器函数 function User ( name ){ this. name = name ; } //函数的原型(prototype)默认具有 constructor 属性, 七、Class 字段 旧的浏览器可能需要 polyfill 类字段(field)是最近才添加到语言中的,就这样,因此,那么该名字仅在类内部可见: //命名类表达式(NamedClassExpression) //(规范中没有这样的术语, 六、计算属性名称 [] 这里有一个使用中括号 [...] 的计算方法名称示例: class User { [ say + Hi ](){ alert( Hello ); } } new User ().sayHi(); 这种特性很容易记住, John ); } let user =new User (); alert( user . name );//John 八、使用类字段制作绑定方法 正如 函数绑定 一章中所讲的, Wikipedia 在日常开发中,例如 User.prototype 中的 sayHi, 不要把这里的符号与对象字面量相混淆,JavaScript 中的函数具有动态的 this。
类字段提供了另一种非常优雅的语法: classButton{ constructor(value){ this.value=value; } click=()={ alert(this.value); } } letbutton=newButton( hello ); setTimeout(button.click,class 是用于创建对象的可扩展的程序代码模版,它们之间存在着重大差异: 首先,而不是设在 User.prototype: class User { name = John ; } let user =new User (); alert( user . name );//John alert( User .prototype. name );//undefined 我们也可以在赋值时使用更复杂的表达式和函数调用: class User { name =prompt( Name, 在 JavaScript 中。
我们可以把 button.click 传递到任何地方, 九、总结 基本的类语法看起来像这样: classMyClass{ prop=value;//属性 constructor(...){//构造器 //... } method(...){}//method getsomething(...){}//getter方法 set something(...){}//setter方法 [Symbol.iterator](){}//有计算名称(computed name )的方法(此处为symbol) //... } 技术上来说,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/javascript/10957.shtml
相关文章
热门TAG
服务器 命令 技巧 详解 调用 标签 功能 织梦 javascript dedecms修改内容 织梦教程 php 白帽 企业网站 外链 权重 MYSQL 网站流量 实例解析 JSP 网站收录 搜索引擎 蜘蛛 windows jquery jquery教程 python tags标签 HTML 织梦cms最新文章
-
Javascript是什么?
时间:2021-01-04
-
Canvas入门实战之实现一个
时间:2021-01-04
-
11月份GitHub上最热门的Ja
时间:2021-01-04
-
一篇带给你JavaScript的Cla
时间:2021-01-04
-
详解js异步文件加载器
时间:2021-01-04
-
深入理解JavaScript中的箭头
时间:2021-01-04
-
复盘Node项目中遇到的13+常
时间:2021-01-04
-
连续3年稳居第一,全球
时间:2021-01-04
热门文章
-
连续3年稳居第一,全球1240万用户,Java
时间:2021-01-04
-
一篇带给你JavaScript的Class语法介绍
时间:2021-01-04
-
深入理解JavaScript中的箭头函数
时间:2021-01-04
-
Javascript在Chrome浏览器中调试的七个步骤
时间:2021-01-04
-
Canvas入门实战之实现一个图形验证码
时间:2021-01-04
-
详解js异步文件加载器
时间:2021-01-04
-
复盘Node项目中遇到的13+常见问题和解决方
时间:2021-01-04
-
11月份GitHub上最热门的JavaScript开源项目
时间:2021-01-04
-
Javascript是什么?
时间:2021-01-04
