JavaScript - 理解面向对象编程
一、关键字new
javaScript的函数,
1、直接执行函数,返回的是undefined。
2、使用new,返回的是对象。
如果函数没有返回值时,返回this。
function Person(name){this.name=name;this.say=function(){console.log("hello "+name);}
}
测试代码如下:
var jonny = Person("jonny");
console.log(jonny); //输出undefined
var jonny = new Person("jonny");
console.log(jonny); //输出Person {name: "jonny", say: ƒ}
在 new 是内部处理流程如下:
new Person() = {var obj = new Object();obj.__proto__ = Person.prototype;var result = Person.call(obj); //obj就有了Person函数里的属性return obj;
}
- 创建一个空对象 obj。
- 把空对象的原型链上级设置成Person的原型函数。
- 更换this调用。
- 返回obj。
如果有return的话,分两种情况。
- return的是五种简单数据类型:String,Number,Boolean,Null,Undefined。
这种情况下,忽视return值,依然返回this对象。
function Person(name){this.name=name;this.say=function(){console.log("hello "+name);}return 1;
}var a = new Person("johny");
console.log(a); //输出Person {name: "johny", say: ƒ}
- return的是Object。
这种情况下,不再返回this对象,而是返回return语句的返回值。
function Person(name){this.name=name;this.say=function(){console.log("hello "+name);}return {hello:this.say};
}var a = new Person("johny");
console.log(a); //输出{hello: ƒ}
二、原型添加的函数
function Person(name){this.name=name;this.say=function(){console.log("hello "+name);}
}
Person.prototype.eat = function() {console.log('eat food');
};
var p1 = new Person('p1');
var p2 = new Person('p2');p1.say === p2.say // false
p1.eat === p2.eat // true
给对象添加的方法,对象的每个实例都有实例各自的方法;
给对象的原型添加方法,对象的每个实例共享同一个方法。节省了内存。
三、内部变量和内部方法
;function Person(name){// 内部变量var _name=name; // 内部方法var _say=function(){console.log("hello "+_name);}return {say: _say}
};var a = new Person("a");
a.say();
四、静态方法
在函数本身上定义的方法,只能通过函数调用,new出来的对象不能够调用。
function Person(){}
Person.sayHi=function(){console.log("Hi!");
};Person.sayHi();//输出Hi!
五、静态对象
jQuery.Person 是一个静态对象,实际就是直接执行匿名函数创建的一个对象。
;jQuery.Person = (function (){// 内部变量var _name=''; // 内部方法var _say = function(name){name && (_name= name); console.log("hello "+_name);}return {say: _say }
})();jQuery.Person.say('mic'); //输出hello mic
JavaScript - 理解面向对象编程相关推荐
- 了解使用JavaScript进行面向对象编程的基础(并增强您的编码…
by Kris Baillargeon 通过克里斯·拜伦 学习使用JavaScript进行面向对象编程的基础知识(并增强您的编码能力!) (Learn the basics of object-ori ...
- 如何通俗的理解面向对象编程
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:磐创AI 面向对象编程或OOP对于初学者来说可能是一个很 ...
- JavaScript 的面向对象编程
发现一个介绍JavaScript面向对象编程的文章,大家可以下下看看:http://pan.baidu.com/share/link?shareid=69566&uk=2802880612 本 ...
- 如何更准确的理解面向对象编程中的对象
现在面向对象的编程思想已经有好长的历史了,我们可能天天都在运用.我们应该如何理解它呢?100个人可能有100种答案,因为它太容易理解了,同时也是最难真正理会其含义的.理解好理解,但在实际的编程当中我们 ...
- JavaScript(四)——面向对象编程、BOM、DOM、表单验证、jQuery
文章目录 1. 面向对象编程 2. 操作BOM对象(重点) 3. 操作DOM对象(重点) 4. 操作表单(验证) 5. jQuery 1. 面向对象编程 (1) 原型对象 javascript.Jav ...
- 如此理解面向对象编程
从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说 ...
- 怎么理解面向对象编程【java基础第一讲】
面向对象编程(OOP)是什么 OOP:Object Oriented Programming.要讲面向对象我们先来理解一下面向过程的含义,如果你已经有c语言相关的开发经验可能就已经明白面向过程的意义. ...
- javascript俄罗斯方块 面向对象编程(jQuery)(附带百度网盘链接)
这个俄罗斯方块游戏是通过javascript面向对象编程的方法编写,代码结构分为游戏类(Game.js),方块类(block.js),地图类(Map.js),方块形状对象类(blockjson.js) ...
- 理解面向对象编程思想
面向过程 面向过程概念:是一种编程思想,就是分析出解决问题所需要的步骤,然后用方法把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 通过下面造车案例了解 面向过程特点:开发周期慢,但是性能 ...
- java 以一个例子来理解面向对象编程思想
在面向对象的编程中,面向对象的应用是检验你对现实中实际物体和及其关系的抽象能力.在实际编程过程中,你的能力并不是你掌握了多少新的技术,而是对你当前问题的认识的深度,当你理解的足够深的时候,你的框架就出 ...
最新文章
- 【Sql server: T-Sql 技术内幕 系列】之索引篇
- Python数据结构——array
- Python正则表达式之修改,分割,搜索和替换字符串(6)
- 告警系统的一些痛点思考
- hdu 3065 AC自动机
- MybatisPlus实现自动填充
- Azure系列2.1.13 —— CloudBlockBlob
- 高倍数泡沫装置PHP_找煤机网:BGP高倍数泡沫灭火装置
- java cpu利用率上不去_Java 面试突击之 Java 并发知识基础 amp; 进阶考点全解析
- 网页设计太麻烦?15款免费优质Bootstrap UI工具包助你效率倍增!
- 7.EVE-NG硬盘扩容,存储海量镜像
- QThread实现多线程
- 群晖系统硬盘损毁的修复
- 幸运抽奖系统带后台源码
- 修改网页logo图片
- Aimo:盘姬工具箱CruiserEXP forWin.
- 国产操作系统都有哪些功能?普通人能满足日常使用吗?
- Ping++通过PCI DSS认证,保护企业用户信息安全
- 只有学历没有学位证的研究生_没有研究生学位就进入数据科学
- 计算机找不到网络设备,解决在设备管理器中找不到网卡的问题
热门文章
- 浪潮gs开发平台学习---平台快速开发入门
- [转帖]javascript做浮点数运算精确问题
- python - - 函数 - - 递归函数
- [JAVA] JAVA 类路径
- Asp.net 构建可扩展的的Comet Web 应用(一)
- 常用的C语言库函数实现
- 配置eclipse插件
- Atlas Control Toolkit更新发布V1.0.60914.0
- jQuery中的join方法
- 30.卷1(套接字联网API)---客户/服务器程序设计规范