1首先我们来看一下js中的public method:
// 创建一个User的构造函数
function User( name, age ){
this.name = name;
this.age = age;
}
// 加一个新的函数getName到User的prototype.
User.prototype.getName = function(){
return this.name;
};
//加另一个函数getAge到 User的prototype.
User.prototype.getAge = function(){
return this.age;
};
//实例化User对象
var user = new User( "Bob", 44 );
// 测试代码
alert( user.getName() == "Bob" );
alert( user.getAge() == 44 );
简单的使用构造函数和prototype属性即可以构造出oo中的 public 方法。
2 紧接着我们来看private方法:
function Classroom(students, teacher ) {
//将student和teacher设置为public属性.
this.students = students;
this.teacher = teacher;
//创建了一个私有的方法disp,展示出所有的学生的名字.
function disp() {
alert(students.join(", ") );
}
// 调用私有的方法
disp();
}
// 创建一个Classroom的对象
var b = new Classroom(["John", "Bob"], "Mr. Smith" );
//会提示出错,因为这里disp是一个私有的方法
b.disp();
3 再来看一下privileged方法,所谓privileged方法也就是可以存取private属性的方法。
function User( name, age ) {
//这边years被设置为一个私有的属性.
var years = (new Date()).getFullYear()-age;
//创建了一个 Privileged方法来存取私有的years属性.
this.getYearBorn = function(){
return years;
};
}
// 创建了一个user对象
var user = new User( "Bob", 44 );
// 测试方法
alert( user.getYearBorn() == 1962 );
//这个将会显示true,这是由于years为私有方法.
alert( user.years == null );
这边要注意的是getYearBorn是一个动态创建的方法,也就是在运行时被加到对象的,而不是首次编译的时候。这种方法非常的power和flexible.我们可以紧接着看下面的例子:这个例子书里面的代码有错,我改了一下,可是改了之后并不能实现书中想实现的功能。
function User( properties ) {
var temp=this;
for ( var i in properties ) { (function(){
temp[ "get" + i ] = function() {
return properties[i];
};
temp[ "set" + i ] = function(val) {
properties[i] = val;
};
})(); }
}
var user = new User({
name: "Bob",
age: 44
});
alert( user.name == null );
alert( user.getname() == "Bob" );
user.setage( 22 );
alert( user.getage() == 22 );
这边 user.getname会直接返回44,lich给我的解释是:
引用
ECMA 给出的函数优化方法对于命令式语言是有问题的,所有的 get[i] 函数因为代码同源,所以都是一个,set[i] 们也是一样。所以怎么变,都是返回一个上次 set[i] 后的值。换句话说,具有讽刺意味的是,properties[i] 都已经被固化为一个地址了,for 取的第一个地址。更令人沮丧的是,使用函数生成器也是没用的。目前还没想到什么好办法。
最后我们来看下静态方法:
User.cloneUser = function( user ) {
//创建并返回一个User对象
return new User(
//这边可以说是克隆了一个user对象.
user.getName(),
user.getAge()
);
};
分享到:
相关推荐
javascript读书笔记1:初次学习javascript的同学比较实用的材料,想要的可以下载;
USB读书笔记 USB读书笔记 USB读书笔记 USB读书笔记
js读书笔记以及知识要点,有兴趣的可以看看
《嵌入式Linux C语言应用程序设计》读书笔记《嵌入式Linux C语言应用程序设计》读书笔记《嵌入式Linux C语言应用程序设计》读书笔记《嵌入式Linux C语言应用程序设计》读书笔记《嵌入式Linux C语言应用程序设计》...
学生读书笔记共享-学生读书笔记共享系统-学生读书笔记共享系统源码-学生读书笔记共享管理系统-学生读书笔记共享管理系统java代码-学生读书笔记共享系统设计与实现-基于springboot的学生读书笔记共享系统-基于Web的...
计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇
毕业论文读书笔记格式,教会你怎么写毕业论文读书笔记格式
读书笔记读书笔记读书笔记
学生读书笔记共享-学生读书笔记共享系统-学生读书笔记共享系统源码-学生读书笔记共享管理系统-学生读书笔记共享管理系统java代码-学生读书笔记共享系统设计与实现-基于springboot的学生读书笔记共享系统-基于Web的...
深入浅出MFC读书笔记3 深入浅出MFC 读书笔记
自己总结的javascript的学习笔记,希望对大家有所帮助!
深入浅出MySQL-读书笔记byCZF深入浅出MySQL-读书笔记byCZF深入浅出MySQL-读书笔记byCZF
地理信息系统概论_读书笔记_黄杏元_地理信息系统概论_读书笔记_黄杏元_地理信息系统概论_读书笔记_黄杏元_地理信息系统概论_读书笔记_黄杏元_地理信息系统概论_读书笔记_黄杏元_地理信息系统概论_读书笔记_黄杏元_
r和统计学读书笔记 r和统计学读书笔记 r和统计学读书笔记 r和统计学读书笔记 r和统计学读书笔记
计算机书籍读书笔记参考.docx
别下别下别下别下别下别下别下别下别下别下别下别下别下别下别下别下别下别下