JavaScript基础 面向对象

简介: 参考:http://bbs.51js.com/thread-74195-1-1.html 构造器 构造器代码必须放在整个类定义的最后,这样做是为了保证在它当中被调用的方法都已经被定义了。   私有实例成员[变量和方法] 私有实例成员在 JavaScript 中实际上可以用函数内的局部变量来实现,它相当于类的私有实例成员 他们只能在该类的对象内部被使用,在对象外无法使用。

参考:http://bbs.51js.com/thread-74195-1-1.html

构造器

构造器代码必须放在整个类定义的最后,这样做是为了保证在它当中被调用的方法都已经被定义了。

 

私有实例成员[变量和方法]

私有实例成员在 JavaScript 中实际上可以用函数内的局部变量来实现,它相当于类的私有实例成员

他们只能在该类的对象内部被使用,在对象外无法使用。

创建私有方法有两种方式,一种是直接在类中定义方法,另一种是先定义一个局部变量(私有实例字段),然后定义一个匿名方法赋值给它。

 

公有实例成员:两种方法,prototype 和this定义

1、prototype 方式只应该在类外定义。this 方式只能在类中定义。

2、prototype 方式如果在类中定义时,则存取私有实例成员时,总是存取最后一个对象实例中的私有实例成员。

3、prototype 方式定义的公有实例成员是创建在类的原型之上的成员。this 方式定义的公有实例成员,是直接创建在类的实例对象上的成员。

基于前两点区别,我们可以得到这样的结论:如果要在公有实例方法中存取私有实例成员,那么必须用 this 方式定义。

关于第三点区别,我们后面在讨论继承时再对它进行更深入的剖析。这里只要知道有这个区别就可以了。

不要把通过 prototype 方式创建的公有实例方法定义在类的内部!

 

公有静态成员

定义的方式就是给 className.memberName 直接赋值。

一定不要将公有静态成员定义在它所在的类的内部

 

静态类

myClass = new function() {...}

 

继承:一种是原型继承法,一种是调用继承法

[原型继承法]

子类继承来的公有实例方法中,如果调用了私有实例字段或者私有实例方法,则所调用的这些私有实例成员是属于父类的。

子类中定义的实例方法,如果调用了私有实例字段或者私有实例方法,则所调用的这些私有实例成员是属于子类的。

定义在父类原型上的方法,会被子类继承。

子类中定义的实例方法是不能访问父类中定义的私有实例成员的。

静态成员是不会被继承的。

 

[调用继承法]

定义在父类原型上的方法,不会被子类继承。

子类中定义的实例方法同样不能访问父类中定义的私有实例成员的。

静态成员同样不会被继承的。

是通过调用继承法,可以实现多继承。也就是说,一个子类可以从多个父类中继承通过 this 方式定义在父类内部的所有公有实例成员。

function subClass() {

// inherit

parentClass.call(this);

 

方法重载示例

function parentClass() {

this.method = function() {

alert("parentClass method");

}

}

function subClass() {

var method = this.method;

this.method = function() {

method.call(this);

alert("subClass method");

}

}

subClass.prototype = new parentClass();

subClass.prototype.constructor = subClass;

 

var o = new subClass();

o.method();

 

相关文章
|
JavaScript 前端开发 Java
深入JS面向对象(原型-继承)(一)
深入JS面向对象(原型-继承)
32 0
|
8月前
js- 面向对象进阶
Object.defineProperty等面向对象的信息
|
8月前
|
存储 JavaScript 前端开发
|
3月前
|
设计模式 前端开发 JavaScript
深入认识:JavaScript中的面向对象
深入认识:JavaScript中的面向对象
18 0
|
4月前
|
Web App开发 JavaScript 前端开发
深度刨析 JavaScript 模拟面向对象的内部机制
深度刨析 JavaScript 模拟面向对象的内部机制
79 0
|
4月前
|
存储 JavaScript 前端开发
【JavaScript】<面向对象Object>函数方法&对象创建&原型对象&作用域解析
【1月更文挑战第17天】【JavaScript】<面向对象Object>函数方法&对象创建&原型对象&作用域解析
|
4月前
|
存储 JSON 前端开发
JavaScript:构造函数&面向对象
JavaScript:构造函数&面向对象
37 2
|
9月前
|
设计模式 JavaScript 前端开发
js面向对象入门
js面向对象入门
57 0
|
4月前
|
存储 JavaScript 前端开发
JavaScript知识总结 终结篇--面向对象,垃圾回收与内存泄漏
JavaScript知识总结 终结篇--面向对象,垃圾回收与内存泄漏
|
8月前
|
存储 JavaScript
js-面向对象
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。