js 实现封装
来源:互联网 发布:linux运维常用脚本 编辑:程序博客网 时间:2024/05/17 12:48
function
Person() {
this
.name =
"jee"
;
this
.age = 25;
this
.getName =
function
() {
return
this
.name;
}
}
var
person =
new
Person();
alert(person.age);
alert(person.getName());
首先
构造函数中这段代码
this
.name =
"jee"
;
this
.age = 25;
这样的话,每一个对象
new
出来 name 和 age 都是 “jee” 25
那么改进后代码
function
Person(name,age) {
this
.name = name;
this
.age = age;
this
.getName =
function
() {
return
this
.name;
}
}
var
p1 =
new
Person(
"xiaoqiang"
,1);
alert(p1.age);
//1
alert(p1.name);
//xiaoqiang
alert(p1.getName());
//xiaoqiang
var
p2 =
new
Person(
"zhangsan"
,2);
alert(p2.age);
//2
alert(p2.name);
//zhangsan
alert(p2.getName());
//zhangsan
那么 接下来 再看 这个方法
this
.getName =
function
() {
return
this
.name;
}
这样写是没问题的 但是 有一点缺陷 就是 每个对象都维护相同的方法实例 而其实它们可以共享此方法 而不必每个对象都生成此示例
在java语言中 面向对象的思想中 有一条 “继承” 既然此方法对于每个对象来说是公用的 那么可以在它的父类中实现
在javascript中继承 是基于原型对象的继承 在原型对象中实现此方法,那么每个对象调用此方法时
首先查看自己是否有此方法 如果有 调用自己的方法 如果没有 去原型对象中查询 调用原型对象的方法
是不是和java中的继承差不多呢?呵呵 看下 改造后的代码
function
Person(name,age) {
this
.name = name;
this
.age = age;
}
Person.prototype.getName =
function
(){
return
this
.name;
}
var
p1 =
new
Person(
"xiaoqiang"
,1);
alert(p1.age);
//1
alert(p1.name);
//xiaoqiang
alert(p1.getName());
//xiaoqiang
var
p2 =
new
Person(
"zhangsan"
,2);
alert(p2.age);
//2
alert(p2.name);
//zhangsan
alert(p2.getName());
//zhangsan
另外 还有对象字面量的形式构造对象
var
p1 ={
name:
"zhangsan"
,
age:1,
getName:
function
(){
return
this
.name;
}
};
alert(p1.name);
//zhangsan
alert(p1.age);
//1
alert(p1.getName());
//zhangsan
在这里鉴于篇幅 就不多讲了
如果lz想详细了解面向对象的javascript编程 可以建议你看下这两本书:<<javascript 权威指南>>,<<javascript高级程序设计>>
0 0
- js 实现封装
- js中实现封装
- js实现命名空间(ajax封装类)
- JS类的封装及实现
- JS类的封装及实现代码
- JS类的封装及实现代码
- JS类的封装及实现代码
- 自己封装的纯js实现ajax
- JS类的封装及实现代码
- JS类的封装及实现代码
- JS类的封装及实现代码
- JS类的封装及实现代码
- JS实现StringFormat和Request对象封装
- JS类的封装及实现代码
- JS实现ajax 封装成方法
- JS类的封装及实现代码
- JS类的封装及实现代码
- js封装下拉框,实现重复利用
- JAVA Proxy(代理) 学习
- linux 打开外部传送来的文件中文乱码问题解决
- PriorityQueue 的概念及其使用
- poj 3177 Redundant Paths 边双连通分量+缩点
- Ext中apply及applyIf方法的应用
- js 实现封装
- C++中对象指针的使用
- 程序员面试之性格篇
- freemarker 数值和类型
- CoreData-实现数据永久性保存时遇到的问题
- JS字符串方法扩展
- maven nexus 的私服搭建
- 在控制台程序中使用MFC类
- C#模拟http 发送post或get请求