javascript面向对象的理解(一)
第一次在园子发文:
关于js面向对象的理解:
工厂方式是什么?构造函数是什么?原形链?对象的引用?
1.对象是什么?
在js接触的比较多的就是对象了,比如:
var arr = []; arr.number = 10; //对象下面的变量:叫做对象的属性 //alert( arr.number );
//alert( arr.length ); arr.a= function(){ //对象下面的函数 : 叫做对象的方法
alert(123);
}; arr.a(); //
通过 new Date() new String() 可以创建一个个对象。
2.工厂方式是什么?
//工厂方式 : 封装函数
function createPerson(name){
//1.原料
var obj = new Object();
//2.加工
obj.name = name;
obj.showName = function(){
alert( this.name );
};
//3.出厂
return obj;
}
var p1 = createPerson('小明');
p1.showName();
通过工厂方式,不需要new 一个函数,直接在函数内部创建一个新的对象,通过给新对象加属性和方法,然后抛出。缺点是:不够灵活。
3.构造函数是什么?
function CreatePerson(name){
this.name = name;
this.showName = function(){
alert( this.name );
};
}
var p1 = new CreatePerson('小明');
p1.showName();
通过在函数外部new 一个函数,实例化了一个对象就是构造函数(一般函数名遵循大写)。在函数内部this就指向了这个实例化的对象,而不是指向window。属性和方法都挂载到了实例化的对象上面去了。缺点:每个方法都挂载在新创建的实例化对象上面,如果需要实例化很多对象,就造成了性能浪费。
特别注意:
p1.showName() == p2.showName();//false 因为如上,方法在每个实例化对象上面,为了解决这个问题,出现了在原型上面加方法。
4.对象的引用:
//example 1: var a = [1,2,3];
var b = a;
b.push(4);
alert(b); //1,2,3,4; // b没有被赋值,只是把引用指向给了a,修改b就是修改a的值 //example 2: var a = [1,2,3];
var b = a;
b = [1,2,3,4];
alert(a); // 1,2,3 //虽然一开始b引用指向了a,但是后来b被赋值了,重新开创了内存单元,赋值成了[1,2,3,4],结果就没有影响a
// 对象类型:复制不仅仅是值的复制,也是引用的传递 //example 3:
var a = [1,2,3];
var b = [1,2,3];
alert(a == b); // 对象类型 必须值和引用都相同才等于
5.原型:
function CreatePerson(name){
this.name = name;
}
//在构造函数原型上添加方法
CreatePerson.prototype.showName = function(){
alert( this.name );
};
var p1 = new CreatePerson('小明');
p1.showName();
var p2 = new CreatePerson('大白');
p2.showName();
alert(p1.showName() == p2.showName()) //true
//给数组原型添加方法:
Array.prototype.sum = function(){
var result = 0;
for(var i = 0; i<this.length; i++){
result += this[i];
}
return result;
}
arr = [1,2,3];
alert(arr.sum()); //
javascript面向对象的理解(一)的更多相关文章
- JavaScript面向对象的理解
JavaScript面向对象的理解 笔记链接: http://pan.baidu.com/s/1c0hivuS 1:JavaScript 中分两种对象,函数对象和普通对象new Function() ...
- javascript javascript面向对象的理解及简单的示例
javascript面向对象的理解及简单的示例 零.本节重点: 1.封装: 2.继承: 壹.下面理解: 一. javascript面向对象概念: 为了说明 JavaScript 是一门彻底的面向对象的 ...
- javascript面向对象个人理解
1. javascript面向对象特性:抽象性,封装性,继承性: 2. js中的对象:键值对的集合:比如说{key:value} 3.抽象性:用一个对象描述一个数据,需要抽取这个对象的核心数据:两个必 ...
- JavaScript 面向对象编程 · 理解对象
前言: 在我们深入 面向对象编程之前 ,让我们先理解一下Javascript的 对象(Object),我们可以把ECMAScript对象想象成散列表,其值无非就是一组名值对,其中值可以是数据 ...
- JavaScript面向对象深入理解原型
原型模式 function Person(){ } Person.prototype.name="Ewarm"; Person.prototype.age="29&quo ...
- JavaScript 面向对象开发知识基础总结
JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...
- 聚焦JavaScript面向对象的思想
面向对象是一种软件开发方法,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物.随着时代的发展,计算机被用于解决越来越复杂的问题.一切事物皆对象,通过面向对象的方式,将现实世界的 ...
- 03.JavaScript 面向对象精要--理解对象
JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...
- 深入理解Javascript面向对象编程
深入理解Javascript面向对象编程 阅读目录 一:理解构造函数原型(prototype)机制 二:理解原型域链的概念 三:理解原型继承机制 四:理解使用类继承(继承的更好的方案) 五:建议使用封 ...
随机推荐
- winrar激活
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-02-11) 新建记事本文件(txt文件),然后将文件另存为以 rarreg.key 为文件名的文件(当然由于设置的不同,可能 ...
- hdu 1861-游船出租
游船出租 Time Limit: 1 ...
- SAE J1850 VPW PWM, SAE J2411 SWC, ISO 11898 CAN, SAE J1708, Chrysler CCD 接口芯片电路
SAE J1850 VPW 接口芯片电路 SAE J1850 PWM 接口芯片电路 SAE J2411 SWC 接口芯片电路 ISO 11898 CAN 接口芯片电路 CANH 和CANL 上的电容 ...
- IAR EWARM Argument variables $PROJ_DIR$ $TOOLKIT_DIR$
在IAR中的help中输入argument variables时会找到这样的一个列表: Argument variables On many of the pages in the Options d ...
- 第七届ACM趣味程序设计竞赛第四场(正式赛) 题解
Final Pan's prime numbers 题目连接: http://acm.uestc.edu.cn/#/problem/show/1272 题意 给你n,要求你在[4,n]范围内找到一个最 ...
- C#的WinForm中制作饼状图和柱状图
using System; using System.IO;//用于文件存取 using System.Data;//用于数据访问 using System.Drawing;//提供画GDI+图形的基 ...
- C语言排序算法
(1)“冒泡法” 冒泡法大家都较熟悉.其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n].同理对a[1],a[2],...a[n-1]处理,即 ...
- ECLIPSE android 布局页面文件出错故障排除Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V
在布局添加控件手动添加还是拖的添加,添加edittext后布局就不好用,其他控件好用,然后就说下面这段话 Exception raised during rendering: java.lang.Sy ...
- BBOSS框架使用jquery方式传參到后台的时候,要注意的事项
BBOSS框架.从前台传到后台的时候,參数要以这样的方式: public String initAddOrModExtendUser(HttpServletRequest request, ...
- php获取当前url完整地址
//获取当前访问的完整url地址 function getCurUrl() { $url = 'http://'; if (isset($_SERVER['HTTPS']) && $_ ...