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

面向对象编程(一)

时间:2014-07-15 23:10:51      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:style   blog   java   color   使用   strong   

本博客是根据个人的理解,来写面向对象编程的,严格意义上来说,javascript实际上是面向原型编程。暂且以大众意义上的说法来学吧,对于这个系列的教程我看了很多,每次看,都把上次看的几乎忘光了,归根到底,是真的没能理解这个,每次看完都像自己理解学会了,其实都没有,看了很多遍,也有自己的领悟,我决定把这个我自己的理解写在博客里。----FaithJin

尊重知识产权,本教程学习自 ruanyifeng.com教程上,我个人很喜欢阮一峰写的文章,扎实有深度,值得学习。

1.1 构造函数

  典型的面向对象编程,如(java),都会有个类(class), 然后每个对象 就是类(class)的实例,但是在javascript的世界中,没有类(class)这个概念,而改用构造函数(constructor)作为对象的模板。

eg: 构造函数(constructor)

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

构造函数跟普通函数不一样,最大的不同是,函数体内部使用了this关键字,代表了要生成对象的实例。生成对象的时候必须使用new 命令。

1.2 new命令

function Person(){
        this.name = "faithJin";
}
var p = new  Person();
p.name;//faithJin

上面的代码,通过new命令,生成一个Person的实例p,继承Person的name属性。

在new执行的过程中,构造函数的内部this,代表的是新生成实例对象p。

如果我们在调用的时候,忘记了new 命令,直接 var p = Person(),我们修改一下构造函数 ,使其可以带一个参数--出现了意想不到的错误,这时的this指向的是全局对象,而且不会生成实例。

function Person(name){
        this.name = name;
}
var p =   Person("faithJin");
 p.name;//Cannot read property ‘name‘ of undefined

为了保证构造函数与new命令一起使用,在构造函数内部,使用严格模式。

function Person(name){
        "use strict"
        this.name = name;
}
Person("faithJin");//TypeError: Cannot set property ‘name‘ of undefined

由于在严格模式中"use strict",函数内部的this不能指向全局对象,默认等于undefined,导致不加new调用会报错(JavaScript不允许对undefined添加属性)。

1.3instanceof 运算符

---未完待续

 

 

面向对象编程(一),布布扣,bubuko.com

面向对象编程(一)

标签:style   blog   java   color   使用   strong   

原文地址:http://www.cnblogs.com/jine/p/3843817.html

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