js6类和对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js6类和对象相关的知识,希望对你有一定的参考价值。
- // 第一种:对象
- var person = {};// 或者var obj = new Object();
- person.name = "king";
- person.age = 20;
- person.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- person.Introduce();
- // 第二种:json格式的对象
- var person = {
- name: "king",
- age: 20,
- Introduce: function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- }
- };
- person.Introduce();
- alert(person.name);// king
- // 第三种(1):类,类似于默认构造函数
- var Person = function () {
- this.name = "king";
- this.age = 20;
- this.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- };
- var person = new Person();// 或者var person = Person();
- person.Introduce();
- alert(person.name);// 输出:king
- alert(person["name"]);// 也可以使用json的访问方式,说明使用function定义类与第二种是等效的
- alert(person.age);// 输出:20
- // 第三种(2):区别仅在于第一行的声明
- function Person () {
- this.name = "king";
- this.age = 20;
- this.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- };
- var person = new Person();
- person.Introduce();
- alert(person.name);// 输出:king
- alert(person.age);// 输出:20
- // 第四种(1):可定制的类,类似构造函数
- var Person = function (name, age) {
- this.name = name;
- this.age = age;
- this.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- };
- var person = new Person("king", 20);
- person.Introduce();
- alert(person.name);// 输出:king
- alert(person.age);// 输出:20
- // 第四种(2):
- function Person (name, age) {
- this.name = name;
- this.age = age;
- this.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- };
- var person = new Person("king", 20);
- person.Introduce();
- alert(person.name);// 输出:king
- alert(person.age);// 输出:20
- // 第五种:变量的封装,将其改为私有。采用了闭包。
- // 在function中用this引用当前对象,通过对属性的赋值来声明属性。即this定义的为公有
- // 如果用var声明变量,则该变量为局部变量,只允许在类定义中调用。即var定义的为私有,不用var则为全局
- var Person = function (name, age) {
- var name = name;
- var age = age;
- this.GetName = function () {
- return name;
- }
- this.GetAge = function () {
- return age;
- }
- this.Introduce = function () {
- alert("My name is " + name + ". My age is " + age);
- };
- };
- var person = new Person("king", 20);
- alert(person["name"]);// undefined
- alert(person.GetName());// king
- // 第五种(2):可参考第三种(2)和第四种(2)
- // 第六种(1):在函数体中创建一个对象(使用第二种),声明其属性再返回
- function Person() {
- var obj =
- {
- ‘age‘:20,
- ‘name‘:‘king‘
- };
- return obj;
- }
- var person = new Person();
- alert(person.age);// 输出:20
- alert(person.name);// 输出:king
- // 第六种(2):函数体内创建对象时使用第一种方法
- function Person() {
- var obj = new Object();
- obj.age = 20;
- obj.name = ‘king‘;
- return obj;
- }
- var person = new Person();
- alert(person.age);// 输出:20
- alert(person.name);// 输出:king
小结:上述第一种、第二种方法为直接创建一个对象字面量。第二种到第六种方法相当于提供了类,使用new操作符(可省略)创建对象实例。
以上是关于js6类和对象的主要内容,如果未能解决你的问题,请参考以下文章