JS-面向对象之原型学习

时间:2022-01-30 17:54:37

原型:prototype  改写对象下面公用到的方法或属性,让公用的方法和属性在内存中只存在一份(好处就是提供性能)

要写在构造函数的下面

可以类比css中的class 而普通方法则类比css中的style


首先优先级方面的问题: 例如

    var num = {};
    num.number = 10
    Object.prototype.number = 20;
    console.log(num.number); //10
    var num = {};
    Object.prototype.number = 20;
    console.log(num.number); //20

工厂方法之原型:

function CreatePerson(name, age, job) {
      this.name = name;
      this.age = age;
      this.job = job;
      this.show = function() {
        console.log(this.age + "岁的" + this.name + "是一名" + this.job);
      }
    }

    var p1 = new CreatePerson("王秀娥", 30, "农村妇女");
    p1.show();

将上面的方法改造一下:

function CreatePerson(name, age, job) {
      this.name = name;
      this.age = age;
      this.job = job;
    }

    CreatePerson.prototype.show = function() {
      console.log(this.age + "岁的" + this.name + "是一名" + this.job);
    }

    var p1 = new CreatePerson("王秀娥", 30, "农村妇女");
    var p2 = new CreatePerson("andy", 26, "程序猿");
    console.log(p1.show == p2.show); //true

这时候,show的方法就是公用的方法了;


面向对象的写法:

function 构造函数() {
      this.属性
    }

    构造函数.原型.方法 = function () {};

那么使用则:

    var 对象1 = new 构造函数();
    对象1.方法();
以上就是面向对象的写法和使用!