码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象的声明方式

时间:2017-11-13 00:15:56      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:基本   构造函数   XML   bsp   his   es6   not   面向对象   ati   

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();

面向对象的声明方式

标签:基本   构造函数   XML   bsp   his   es6   not   面向对象   ati   

原文地址:http://www.cnblogs.com/AndHowAreYou/p/7823417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!