面向对象的声明方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象的声明方式相关的知识,希望对你有一定的参考价值。

1.最早的声明方式

let person=new Objiect{

person.name="张山";

person.age=18;

person.say=function(){

console.log("my name is"+person.name+"年龄是"+person.age);

          }

}

console.log(person.name);

person.say();

这种方式的缺点是没有对函数进行封装,每次创建对象都会书写大量的代码,现在已经废弃了

2.字面量创建对象(json),使用一对大括弧

let person={

name:"张三",

age:18

}

这种方式书写起来更加简便,但是本质上和Object是类似的,没有进行封装。但是这种方法不仅没有被废弃,反而现在非常的火,基本快要替代XML

使用这种方式创建的对象有一个名字叫做JSON,全称javascript Object Notation,翻译成中文是JavaScript对象交换格式,这个JSON主要是做数据的传输。

XML也是用于数据的传输,但是XML的解析非常的麻烦,有很多无用标签,所以已经逐渐被JSON所替代

3.自定义构造函数创建对象

 

let Person=function(name,age){

  this.name=name;

  this.age=age;

  this.say=function(){

    console.log(this.name);

  }

}

let zhangsan=new Person("张三",18);

console.log(zhangsan.age);

zhangsan.say();

使用自定义构造函数以后,实例化对象不需要再一次书写name,age等属性,只需要通过一个关键字new实例化出来一个就可以了。这种写法更加接近其他的高级语言。

但是这种方式还是有一个缺点,那就是方法对于每个对象来说是公用的。所以有一份就可以了,不需要每个对象里面都有一份这个相同的方法

4.构造函数+原型方法

let Person=function(name,age){

  this.name=name;

  this.age=age;

}

Person.prototype.say=function(){

    console.log(this.name);

  }

let zhangsan=new Person("张三",18);

console.log(zhangsan.age);

zhangsan.say();

这种方式的核心理念就是将共同的方法部分写在了原型对象上面。之后实例化出来的每个对象都共享这个原型方法

5.ES6中创建对象的方法(类)

class Person{

//构造器函数,由于初始化函数

  constructor(name ,age){

    this.name=name;

    this.age=age;

  }

  //原型方法

  say(){

  console.log(this.name)

  }

}

let zhangsan=new Person("张三",18);

console.log(zhangsan.age);

zhangsan.say();

以上是关于面向对象的声明方式的主要内容,如果未能解决你的问题,请参考以下文章

C#面向对象基本概念总结

前端 JavaScript 设计模式前奏--面向对象-Class类

Lua面向对象编程

Lua面向对象编程

前端 JavaScript 设计模式前奏--面向对象-Class类

前端 JavaScript 设计模式前奏--面向对象-Class类