JavaScript 对象的原型扩展(JS面向对象中的继承)
<script type="text/javascript">
function person(name, age) {
this._name = name;
this._age = age;
var _self = this;
this.say = function() {
console.log(this._name + '-' + this._age);
setTimeout(function() {
console.log(_self._name);
}, 2000);
}
}
person.prototype.foot = function() {
console.log("I foot " + this._age);
}
var xiaoming = new person('xiaoming', 18);
xiaoming.foot();
// console.log(JSON.stringify(xiaoming));
</script>
prototype在软件界的意思为原型即表对象的初始形态。JavaScript 中的 prototype。
js的所有function类型的对象都有一个prototype 属性。这个 prototype 属性本身又是一个object 类型的对象,因此可以给这个 prototype 对象添加任意的属性和方法。
在 JavaScript 内部,对象的属性和方法追溯机制是通过所谓的 prototype 链来实现的。当用 new 操作符构造对象时,也会同时将构造函数的 prototype 对象指派给新创建的对象,成为该对象内置的原型对象。对象内置的原型对象应该是对外不可见的,尽管有些浏览器(如 Firefox)可以让我们访问这个内置原型对象,但并不建议这样做。
这就是JavaScript的“继承”!
有了继承我们可以对已有对象(包含js内置对象、自定义对象)进行方便的扩展了!
JavaScript 对象的原型扩展(JS面向对象中的继承)的更多相关文章
- JavaScript之对原生JavaScript对象及其原型扩展初探
Object对象: //扩展:对JavaScript原生对象的扩展 //原理:原型对象 Object.prototype.keys = function(){ var keys = []; for(v ...
- web前端学习(二) javascript对象和原型继承
目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...
- JavaScript面向对象中的继承
1.1继承的基本概念 使用一个子类,继承另一个父类,那么子类可以自动拥有父类中的所有属性和方法,这个过程叫做继承. >>>继承的两方,发生在两个类之间. 实现继承的三种方式: 扩展O ...
- 简单粗暴地理解js原型链–js面向对象编程
简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...
- Python面向对象中的继承、多态和封装
Python面向对象中的继承.多态和封装 一.面向对象的三大特性 封装:把很多数据封装到⼀个对象中,把固定功能的代码封装到⼀个代码块, 函数,对象, 打包成模块. 这都属于封装思想. 继承:⼦类可以⾃ ...
- 三张图搞懂JavaScript的原型对象与原型链 / js继承,各种继承的优缺点(原型链继承,组合继承,寄生组合继承)
摘自:https://www.cnblogs.com/shuiyi/p/5305435.html 对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__pro ...
- 理解javascript 对象,原型对象、闭包
javascript作为一个面向对象的语言,理解 对象.原型.闭包.模块模式等技术点对于成为一名合格的javascript程序员相当重要,多年没写过blog,今天就先拋个玉,在下基本也不做前端,但颇感 ...
- 简单粗暴地理解js原型链--js面向对象编程
原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧, ...
- Javascript对象、Jquery扩展简单应用
Javascript对象,表现方式一: person = new Object(); person.firstname = "An"; person.lastname = &quo ...
随机推荐
- java web项目初始化启动一个java方法
项目中需要一些初始化数据,或者加载中断的任务. 首先在web.xml中配置信息,配置在<web-app>中: <servlet> <servlet-name>Ini ...
- REUSE_ALV_GRID_DISPLAY_LVC 的user_command
*&--------------------------------------------------------------------* *& Form CALL_FUNCTIO ...
- Whats the difference between service tomcat ./startup.sh and ./catalina.sh run
stack overflow 给出的答案: catalina.sh run starts tomcat in the foreground, displaying the logs on the co ...
- (linux)struct inode 和 struct file
转自:http://www.cnblogs.com/QJohnson/archive/2011/06/24/2089414.html 1.struct inode──字符设备驱动相关的重要结构介绍 内 ...
- php-循环普通数组和关联数组
<?php //循环普通数组 $arr=array("杭州","成都","拉萨"); $arrlength=count($arr); ...
- c++程序书写原则
1.头文件中声明类,数据变量声明为私有,函数声明为公有. 2.所有函数实现放在非main.cpp文件中. 3.main.cpp只写函数的调用接口.
- Android图片加载神器之Fresco, 基于各种使用场景的讲解
Fresco是Facebook开源Android平台上一个强大的图片加载库,也是迄今为止Android平台上最强大的图片加载库. 优点:相对于其他开源的第三方图片加载库,Fresco拥有更好的内存管理 ...
- HihoCoder 1502 : 最大子矩阵 (双指针)
描述 给定一个NxM的矩阵A和一个整数K,小Hi希望你能求出其中最大(元素数目最多)的子矩阵,并且该子矩阵中所有元素的和不超过K. 输入 第一行包含三个整数N.M和K. 以下N行每行包含M个整数,表示 ...
- codevs 3027线段覆盖2
传送门 3027 线段覆盖 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 数轴上有n条线段,线段的两端都是整数坐标, ...
- Unix高级环境编程
[07] Unix进程环境==================================1. 进程终止 atexit()函数注册终止处理程序. exit()或return语句: ...