美文网首页
16.ES6类,对象及一些注意点

16.ES6类,对象及一些注意点

作者: Fl_来看看 | 来源:发表于2019-06-06 15:58 被阅读0次
  • es6之前:没用关键字
  • es6之后:用关键字constructor, static来定义实例方法属性,静态方法,静态属性

es6之前

 /*
        1.在ES6之前如果定义一个类?
        通过构造函数来定义一个类
        */
        /*
        function Person(myName, myAge) {
            // 实例属性
            this.name = myName;
            this.age = myAge;

            // 实例方法
            this.say = function () {
                console.log(this.name, this.age);
            }
            // 静态属性
            Person.num = 666;
            // 静态方法
            Person.run = function () {
                console.log("run");
            }
        }
        // let p = new Person();
        let p = new Person("zs", 18);
        p.say();
        console.log(Person.num);
        Person.run();

es6

  • 从ES6开始系统提供了一个名称叫做class的关键字,这个关键字就是专门用于定义类的
  • Person后面没有(),可以传参数,new的时候constructor接受参数
  • 实例方法写在constructor里面,静态方法属性写在constructor外面
 class Person{
            // 当我们通过new创建对象的时候, 系统会
            //自动调用constructor
            // constructor我们称之为构造函数
            constructor(myName, myAge){
                this.name = myName;
                this.age = myAge;
            }
            // 实例属性
            // name = "lnj";
            // age = 34;
            // 实例方法
            say(){
                console.log(this.name, this.age);
            }
            // 静态属性
            static num = 666;
            // 静态方法
            static run() {
                console.log("run");
            }
        }
        // let p = new Person();
        let p = new Person("zs", 18);
        p.say();
        console.log(Person.num);
        Person.run();

注意点:

  • 构造函数里面定义实例属性,有些浏览器不支持的,要写在constructor里
    // 实例属性【这样写有些浏览器不支持的,要写在constructor】
       name = "lnj";
       age = 34;
       实例方法
  • 构造函数里面定义静态属性,一些浏览器不支持,静态方法可以。
class Person{
            // 静态属性【es6标准版不支持这样,会报错,仅静态方法ok】
            static num = 666;
            // 静态方法
            static run() {
                console.log("run");
            }
        }
         // 静态属性【这样写不会报错】
         Person.num = 666;

es6之前给原型对象添加方法属性

function Person(myName, myAge) {

            this.name = myName; // stu.name = myName;
            this.age = myAge; // stu.age = myAge;
             this.hi= function () {
                console.log("hi");
            }
            // return this;
        }
        Person.prototype.say = function () {
            console.log(this.name, this.age);
        }
         let p= new Person();
          console.log(p);
7.jpg

Person.prototype.say,say在proto

es6给原型对象添加方法属性

 class Person{
            // 当我们通过new创建对象的时候, 系统会自动调用constructor
            // constructor我们称之为构造函数
            constructor(myName, myAge){
                this.name = myName;
                this.age = myAge;
                this.hi= function(){
                console.log(this.name, this.age);
                   }
                   //都在对象上
            }
              say () {
                console.log(“k”);
                //在原型链上
             }
        }
8.png
  • 不在constructor 定义的属性方法,自动挂载在原型对象上

还有,用es6 class定义类A,如果给类添加一个原型对象,比如是obj,那么!obj内的属性方法,A的实例是找不到的!,因为在A内,不在constructor定义的方法C就自动挂载到原型对象B上,而此时已经有了原型对象obj,就是说在A内产生的原型对象B,已经没有用了!因为已经有了obj了!~,打印A的实例,在proto是看不到C方法的,并且A的实例也访问不到obj里的方法和属性,因为es6不允许。

就是说,通过es6定义的类,不能自定义原型对象,因为es6已经帮我们弄好了,比如类A内,不在constructor定义的方法C就自动挂载到原型对象B上

相关文章

  • 16.ES6类,对象及一些注意点

    es6之前:没用关键字 es6之后:用关键字constructor, static来定义实例方法属性,静态方法,静...

  • Java--Class类相关与反射重温

    一、注意点 面向对象的世界中,万事万物皆对象。 Java中的类,是java.util.Class类的实例对象 类的...

  • 1.7. 第一个OC类

    目录 如何声明一个类 如何实现一个类 如何创建一个对象 对象的注意点 1.如何声明一个类 格式 注意:1.必须以@...

  • ubuntu 下基于python深度学习

    一.python 的基本语法 <1>Python 类的定义、继承及使用对象 注意super()的使用,成员函...

  • 【python】学习面向对象编程(二)

    注意点 对象的__dict__是可以赋值修改的,但类的__dict__不能修改,是只读的对象和类的__dict__...

  • web前端入门到实战:JavaScript中尺寸类样式

    一:鼠标尺寸类样式 都要事件对象的配合 Tip:注意与浏览器及元素尺寸分开,鼠标类尺寸样式都是X,Y,浏览器及元素...

  • 继承

    @interface A :B只要A类继承了B类,A类就拥有B类所有的属性和方法(对象方法和类方法)注意点: 在继...

  • CPP:03类的细节注意点

    CPP:03-类的一些细节注意点

  • php注意事项总结

    继承注意点: 1.继承之后重写方法,参数必须与父类一样 类: 对象总是通过引用传递

  • Dart语法面向对象之1

    面向对象之1 概述 类与对象,声明、创建及基本特性构造方法及初始化列表静态成员及对象操作符的使用 类 属性与方法 ...

网友评论

      本文标题:16.ES6类,对象及一些注意点

      本文链接:https://www.haomeiwen.com/subject/azhuxctx.html