第一次在园子发文:

关于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面向对象的理解(一)的更多相关文章

  1. JavaScript面向对象的理解

    JavaScript面向对象的理解  笔记链接: http://pan.baidu.com/s/1c0hivuS 1:JavaScript 中分两种对象,函数对象和普通对象new Function() ...

  2. javascript javascript面向对象的理解及简单的示例

    javascript面向对象的理解及简单的示例 零.本节重点: 1.封装: 2.继承: 壹.下面理解: 一. javascript面向对象概念: 为了说明 JavaScript 是一门彻底的面向对象的 ...

  3. javascript面向对象个人理解

    1. javascript面向对象特性:抽象性,封装性,继承性: 2. js中的对象:键值对的集合:比如说{key:value} 3.抽象性:用一个对象描述一个数据,需要抽取这个对象的核心数据:两个必 ...

  4. JavaScript 面向对象编程 · 理解对象

    前言:      在我们深入 面向对象编程之前 ,让我们先理解一下Javascript的 对象(Object),我们可以把ECMAScript对象想象成散列表,其值无非就是一组名值对,其中值可以是数据 ...

  5. JavaScript面向对象深入理解原型

    原型模式 function Person(){ } Person.prototype.name="Ewarm"; Person.prototype.age="29&quo ...

  6. JavaScript 面向对象开发知识基础总结

    JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...

  7. 聚焦JavaScript面向对象的思想

    面向对象是一种软件开发方法,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物.随着时代的发展,计算机被用于解决越来越复杂的问题.一切事物皆对象,通过面向对象的方式,将现实世界的 ...

  8. 03.JavaScript 面向对象精要--理解对象

    JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...

  9. 深入理解Javascript面向对象编程

    深入理解Javascript面向对象编程 阅读目录 一:理解构造函数原型(prototype)机制 二:理解原型域链的概念 三:理解原型继承机制 四:理解使用类继承(继承的更好的方案) 五:建议使用封 ...

随机推荐

  1. thinkphp 3+ 观后详解 (4)

    static public function run() { // 应用初始化标签 Hook::listen('app_init'); App::init(); // 应用开始标签 Hook::lis ...

  2. 全代码实现ios-1

    第一次接触ios开发时,就决定用代码开发,而不用ib.因为被ib的各种控件的联线弄得一头雾水,而且ib和storyboard变动太快了. 开始的时候真是麻烦,因为网上关于全代码开发的例子太少了,大多数 ...

  3. 更改SQL数据库的繁体数据为简体

    上一篇说到,公司需要把所有的系统逐步更改为简体,一些系统可以保持原先的繁体数据,而有一些系统应使用部门的要求,必须要更改为简体,由于程序很大,报表也多,修改程序转换显示的可能性不大,故所以打算把数据库 ...

  4. 在ASP.NET MVC中使用MySQL【并使用membership】

            大多数情况下我们使用.NET或ASP.NET(包括MVC)程序时,我们会同时选择SQL Server 或者SQL Express (其他微软产品)做数据库.但是今天使用MVC已经完全没 ...

  5. C++的优秀特性5:模版

    (转载请注明原创于潘多拉盒子) C++是强类型语言,而且恐怕是强类型语言里面类型最严格的.这意味着:1. C++变量的类型在定义时就确定了:2. 该类型在后续的生命期中不会改变.比如: int n = ...

  6. Autolayout环境设置任意个数相等间距排列的按钮的方法

    摘要: 在storyboard中,想要用autolayout设置多个按钮按照相同的间距排列,并且自动根据屏幕宽度调整间距大小,就我了解的来说,没有直接的设置方法.我用storyboard+代码的方法实 ...

  7. WSS3.0 SDK中的不同列表类型的对应值

    Value Description 100 Generic list 101 Document library 102 Survey 103 Links list 104 Announcements ...

  8. c#无损高质量压缩图片

    这几天在做同城交友网www.niyuewo.com时遇到的一个问题,如何将会员的头像压缩,在网上搜索整理如下:在此也感谢医药精(www.yiyaojing.com)站长的帮忙 /// <summ ...

  9. qobject_cast用法

    函数原型: T qobject_cast ( QObject * object ) 本方法返回object向下的转型T,如果转型不成功则返回0,如果传入的object本身就是0则返回0. 在使用时有两 ...

  10. 使用NuGet加载包,发现加载的dll都是最新版,原来少加了参数[-Version]

    使用NuGet获取AutoMapper 发现无法正确加载包,项目版本是3.5,获取的dll版本较高,查资料发现可以通过 “-Version” 指定加载包版本 http://www.mamicode.c ...