opp(Object Oriented Programming)
嗯,昨天忙了一天没来及发,过年啊,打扫啊,什么搽窗户啊,拖地啊,整理柜子啊,什么乱七八糟的都有,就是一个字,忙。
好了,废话也不多说,把自己学到的放上来吧。嗯,说什么好呢,就说原型链啊
原型对象
每个javascript对象都有一个原型对象,这个对象在不同的解释器下的实现不同。比如在firefox下,每个对象都有一个隐藏的__proto__属性,这个属性就是“原型对象”的引用。
原型链
由于原型对象本身也是对象,根据上边的定义,它也有自己的原型,而它自己的原型对象又可以有自己的原型,这样就组成了一条链,这个就是原型链,JavaScritp引擎在访问对象的属性时,如果在对象本身中没有找到,则会去原型链中查找,如果找到,直接返回值,如果整个链都遍历且没有找到属性,则返回undefined.原型链一般实现为一个链表,这样就可以按照一定的顺序来查找。
怎么讲呢?直接把例子放上来讲好了
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
</head> <body>
<script type="text/javascript">
window.onload = function() {
/*这里就大概了解一下,每一个对象都有一个原型,原型对象的方法属性,对象都可以用*/
function foo() {
this.y = 2;
}
foo.prototype.x = 1;/*比如这里,定义了原型的属性,x=1*/
var rr = new foo();
console.log(rr.y + "和" + rr.x);/*实例化后,可以直接调用原型对象的属性,把原型看成一个类或者方法的集合就可以了*/ /*继承*/
function person(name,sex){/*构造函数*/
this.name=name;
this.sex=sex;
}
person.bb="我是person 上的";
person.prototype.hi=function(){
console.log(this.name+"你好"+"我是"+this.sex+"的");
}
person.prototype.walk=function(){
console.log(this.name+"正在走路");
}
person.prototype.a=2
function student(name,sex,like){
person.call(this,name,sex);/*我这里用call方法来继承*/
this.like=like;
}
student.prototype=Object.create(person.prototype); /*这里用Object.create(继承谁的?)来继承prototype,实质是person.prototype的一个空对象赋值给student.prototype*/
student.prototype.constructor = student;/*再把名字重新定义过来*/ Object.prototype.ting = function(){
console.log(this.name+"正在听")
}
student.prototype.chi = function(){
console.log(this.name+"喜欢吃"+this.like);
}
student.prototype.pa = function(xiezi){
console.log(this.name+"穿上"+xiezi+"奔跑");
}
var kk = new student("bob","男","冰淇淋")/*new 实例化对象*/
// console.log(kk.a);
// console.log(kk.hi());
console.log(kk.ting())
// console.log(typeof student.prototype);/*typeof 查看目标是什么类型的*/
console.log(kk.pa("鞋子")); console.log(kk instanceof person.bb)/*intanceof查看右边有没有在左边的原型链上*/
console.log(kk instanceof person)
console.log(typeof kk) }
</script> </body>
</html>
opp(Object Oriented Programming)的更多相关文章
- Object Oriented Programming python
Object Oriented Programming python new concepts of the object oriented programming : class encapsula ...
- JavaScript: Constructor and Object Oriented Programming
Constructor : Grammar: object.constructor Example: Javascript code: 1 function obj1() { this.number ...
- 面对对象编程(OOP, Object Oriented Programming)及其三个基本特性
一千个读者,一千个哈姆雷特.对于面对对象编程,书上都会告诉我们它有三个基本特性,封装,继承,多态,但谈起对这三点的见解,又是仁者见仁智者见智,感觉还是得多去编程中体验把 . 面向对象编程(OOP, O ...
- Python 面向導向語言 Object Oriented Programming Language
Pytho 是面向對象的程式語言,舉凡 Literals 值都是 Object.例如: >>> id(38)8791423739696 與 >>> id('ABC' ...
- leetcode@ [355] Design Twitter (Object Oriented Programming)
https://leetcode.com/problems/design-twitter/ Design a simplified version of Twitter where users can ...
- oop(Object Oriented Programming)
嗯,昨天忙了一天没来及发,过年啊,打扫啊,什么搽窗户啊,拖地啊,整理柜子啊,什么乱七八糟的都有,就是一个字,忙. 好了,废话也不多说,把自己学到的放上来吧.嗯,说什么好呢,就说原型链啊 原型对象 每个 ...
- Week 5: Object Oriented Programming 9. Classes and Inheritance Exercise: int set
class intSet(object): """An intSet is a set of integers The value is represented by a ...
- python, 面向对象编程Object Oriented Programming(OOP)
把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数 ...
- JS面向对象程序设计(OOP:Object Oriented Programming)
你是如何理解编程语言中的面向对象的? 我们研究JS和使用JS编程本身就是基于面向对象的思想来开发的,JS中的一切内容都可以统称为要研究的“对象”,我们按照功能特点把所有内容划分成“几个大类,还可以基于 ...
随机推荐
- PHP 页面缓冲函数
1.flush:刷新缓冲区的内容,输出.函数格式:flush()说明:这个函数经常使用,效率很高.2.ob_start :打开输出缓冲区函数格式:void ob_start(void)说明:当缓冲区激 ...
- deb安装了些啥?
http://www.cyberciti.biz/faq/view-contents-of-deb-file/
- enum的java例子
Grade.java package com.zhiyuan.myenum; /** * <p>Title: 枚举类 * <p>Company: * @description ...
- 对float的理解
从IE6下的双边距引出 对一个div设置float:left;同时设置了margin-left:100px时在IE6下会出现双边距. 有两种解决办法: 1,推荐办法.加display:inline 2 ...
- ajax 基础2
连接数据库实现分页功能 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defa ...
- DrawerLayout学习笔记
基本步骤: 1>在XML中将DrawerLayout作为根视图 2>根视图中放两个View,第一个是主视图,即DrawerLayout隐藏的时候的视图,第二是就DrawerLayout的视 ...
- Tsinsen-1487:分配游戏【树状数组】
首先一定要看到x + y + z = N这个条件,没看到就世界再见了. 赢的人得分需要大于等于2,那么无非就是 (x, y), (x, z), (y, z), (x, y, z) 大于其他的点.但是考 ...
- JQuery Easy Ui dataGrid 数据表格 -->转
转至: http://www.cnblogs.com/cnjava/archive/2013/01/21/2869876.html#events 数据表格 - DataGrid 内容 概况 使用方法 ...
- jquery $提示缺少对象$提示缺少对象
jquery $提示缺少对象 项目中存在不同版本的jquery,有1.4也有1.2, 之前运行项目不会报错 " $提示缺少对象 ",但是我的IE9重置之后就报错,从网上找了一大堆, ...
- redis 配置(1)
redis配置密码 1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 #requirepass foobared 去掉行前的注释,并修 ...