【读书笔记】对象创建摘录

 1 //工厂模式
 2 function createPerson(name, age, job){
 3     var o = new Object();
 4     o.name = name;
 5     o.age = age;
 6     o.job = job;
 7     o.sayName = function(){
 8         alert(this.name);
 9     }
10     return o;
11 }
12 function createPerson(name, age, job){
13     return {
14         name:name,
15         age:age,
16         job:job,
17         sayName:function(){
18             alert(this.name);
19         }
20     }
21 }
22
23 //构造函数模式
24 function Person(name, age, job){
25     this.name = name;
26     this.age = age;
27     this.job = job;
28     this.sayName = function(){
29         alert(this.name);
30     }
31     //每个对象的sayName都是不同的函数  解决办法:sayName用一个全局函数赋值
32 }
33
34 //String.startsWith
35 String.prototype.startsWith = function(text){
36     return this.indexOf(text) == 0;
37 }
38
39 //原型模式
40 function Person(){}
41 Person.prototype = {
42     constructor:Person,
43     name:"default",
44     age:0,
45     job:"coder",
46     friends:["jim","jack"],//所有实例共享这个属性,修改一个对所有实例生效,如果其他实例没有覆盖这个属性的话
47     sayName:function(){
48         alert(this.name);
49     }
50 }
51
52 //组合使用构造函数模式和原型模式
53 function Person(name, age, job){
54     this.name = name;
55     this.age = age;
56     this.job = job;
57     this.friends = ["Shelby", "Court"];
58 }
59 Person.prototype = {
60     constructor:Person,
61     sayName:function(){
62         alert(this.name);
63     }
64 }
65
66 //动态原型模式
67 function Person(name, age, job){
68     this.name = name;
69     this.age = age;
70     this.job = job;
71     if(typeof this.sayName != "function"){
72         Person.prototype.sayName = function(){
73             alert(this.name);
74         }
75     }//不能使用字面量来重写原型,否则会切断现有实例与新原型的联系
76 }
时间: 2024-11-08 13:46:23

【读书笔记】对象创建摘录的相关文章

Effective Java 读书笔记(2创建和销毁对象)

第一章是引言,所以这里不做笔记,总结一下书中第一章的主要内容是向我们解释了这本书所做的事情:指导Java程序员如何编写出清晰.正确.可用.健壮.灵活和可维护的程序. 2.1考虑用静态工厂方法代替构造器 静态工厂方法与构造器相比有四大优势: (1)静态工厂方法有名称,具有适当名称的静态工厂方法易于使用.易于阅读: (2)不必每次在调用它们的时候都创建一个新的对象: (3)可以返回原返回类型的任何子类型的对象: (4)在创建参数化类型实例的时候,它们使代码变得更加简洁. 同时静态工厂方法也有两大缺点

pthon核心编程-读书笔记:知识点摘录与总结(方便理解和快速记忆)

Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的.在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们, 缩短开发时间与代码量,产生出可读性更好的代码.C不提供, c++功能不够简洁. 面向对象, 可升级:Python 提倡简洁的代码设计.高级的数据结构和模块化的组件,确保灵活性. 一致性并缩短必要的调试时间 扩展性:兼容扩展c和java 易读写,易维护 健壮性:Python 提供了"安全合理"的退出机制, Python由于错误崩溃,解释程序就会转出一个

Effective Java 读书笔记之一 创建和销毁对象

一.考虑用静态工厂方法代替构造器 这里的静态工厂方法是指类中使用public static 修饰的方法,和设计模式的工厂方法模式没有任何关系.相对于使用共有的构造器来创建对象,静态工厂方法有几大优势: 1.静态工厂方法有名称:通过有意义的静态工厂方法名称可以很好的表达工厂方法的作用,易于区别功能相似的多个静态工厂方法. 2.静态工厂方法可以有更复杂的生产对象逻辑,不仅仅是新建一个对象:既可以新建一个对象,也可以使用缓存的对象. 3.静态工厂方法可以返回原返回类型的任何子类型的对象:由于接口不能有

effective java读书笔记1——创建和销毁对象

今天刚开始读effective java,中文版的读起来很拗口,但感觉收获很多. 另外,这本书的内容是针对Java 1.5和1.6的. 在这里整理一下第2章:创建和销毁对象 的内容. 第一条:考虑用静态工厂方法代替构造器 这一条针对的情景是要获得类的实例时.一般说来,想要获得类的实例,都是通过构造函数(书里叫做构造器). 最常见的构造函数是这样的,没有返回参数,名字和类名相同. public class A{ public A(int a){ //构造函数内容 ... } } 而所谓的静态工厂,

读书笔记--对象、实例、原型、继承

创建对象的设计模式 工厂模式 抽象了创建具体对象的过程,用函数封装以特定接口创建对象的细节 解决了创建多个相似对象的问题,没有解决对象识别的问题 function createPerson(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.sayName = function(){ alert(this.name) } return obj; } var person = createPerson('aa

R语言实战读书笔记2—创建数据集(上)

第二章 创建数据集 2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字段(field) ,数据挖掘/机器学习学科的研究者则把它们叫做示例(example)和属性(attribute) .如表2.1所示 在表2-1所示的数据集中, PatientID 是行/实例标识符, AdmDate 是日期型变量, Age 是连续型变量, Diabetes 是名义型变量, Statu

R语言实战读书笔记(二)创建数据集

2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow=TRUE/FALSE,表示按行填充还是按列填充,默认情况下是按列填充 2.2.4 数据框 1.attach,detach()和with() attach():将数据框加入搜索路径 detach():将数据框移除出搜索路径 with():赋值仅在括号内有效,如果想在括号外生效也可以,用<<- 2.

《高性能MySQL》读书笔记之创建高性能的索引

索引是存储引擎用于快速找到记录的一种数据结构.索引优化是对查询性能优化的最有效手段.索引能够轻易将查询性能提高几个数量级.创建一个最优的索引经常需要重写查询.5.1 索引基础 在MySQL中,存储引擎首先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行. 索引可以包含一个或多个列的值.如果索引包含多个列,那么列的顺序也十分重要,因为MySQL只能高效地使用索引的最左前缀列. 5.1.1 索引的类型 索引有很多类型,可以为不同的场景提供更好的性能.在MySQL中,索引是在储存引擎层而不是

《逐梦旅程 WINDOWS游戏编程之从零开始》读书笔记1——创建窗口

步骤: 窗口类的设计 窗口类的注册 窗口的正式创建 窗口的显示与更新 1. 设计:使用WNDCLASSEX结构体,这里注意的是C++中的结构体中的成员默认是共有的,所以可以直接通过 . 来调用. typedef struct tagWNDCLASSEX { UINT cbSize; //UINT类型的cbSize,表示该结构体的字节数大小 UINT style; //指定窗口的风格样式 WNDPROC lpfnWndProc; //指向窗口过程函数的函数指针 int cbClsExtra; //