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()
);
};
分享到:
相关推荐
### 毕业论文读书笔记格式详解 #### 一、引言 在撰写毕业论文的过程中,阅读相关的文献资料是必不可少的环节。为了更好地理解和吸收这些资料中的精华,并将其有效地融入到自己的毕业论文中,撰写读书笔记显得尤为...
【标题】"java读书笔记笔记笔记笔记笔记笔记" 暗示了这是一份关于Java编程语言的学习笔记,可能包含了作者在阅读Java相关书籍时所做的重要记录和理解。笔记通常涵盖了语言的基础概念、核心特性、类与对象、内存管理...
学生读书笔记共享-学生读书笔记共享系统-学生读书笔记共享系统源码-学生读书笔记共享管理系统-学生读书笔记共享管理系统java代码-学生读书笔记共享系统设计与实现-基于springboot的学生读书笔记共享系统-基于Web的...
计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇
学生读书笔记共享-学生读书笔记共享系统-学生读书笔记共享系统源码-学生读书笔记共享管理系统-学生读书笔记共享管理系统java代码-学生读书笔记共享系统设计与实现-基于springboot的学生读书笔记共享系统-基于Web的...
从给定的文件信息来看,虽然标题和描述指向了“读书笔记”,但内容部分似乎包含了一些乱码,无法直接解析出具体的知识点。不过,基于标题和描述的提示,我们可以探讨一下如何撰写高质量的读书笔记,以及在IT行业背景...
读书笔记
sql fundament 读书笔记 oracle 原厂 培训 金领DBA
国家间政治读书笔记.pdf
谈谈辩证法问题读书笔记.doc
本文将结合专业课件《小学生怎样写读书笔记》的内容,深入探讨小学生该如何制作读书笔记,以及读书笔记的重要性。 首先,读书笔记是阅读过程中的一个辅助工具,它能够帮助记录和理解书中的精华。通过有效的笔记方法...
Hadoop权威指南----读书笔记
一些关于CCNA的中文版读书笔记,上边记录着CCNA考试需要注意的一些问题和考点之类的内容
_IDApro权威指南个人学习笔记_ 《IDApro权威指南》个人学习笔记是关于IDApro反汇编工具的使用指南,该指南涵盖了IDApro的基础功能、指令优化、数组、结构体、网络节点等方面的知识点。 基础功能强化 IDApro是一款...
《在马克思墓前的讲话》读书笔记.pdf
考研通信工程读书笔记内部资料考研通信工程读书笔记内部资料