博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原型链
阅读量:5952 次
发布时间:2019-06-19

本文共 1787 字,大约阅读时间需要 5 分钟。

基本概念:

  • 在js中,一切皆对象
  • 每个对象都有一个指向它的原型的的内部链接(此链接还没有规范的访问方式,一般用__proro__代替),这个原型也有自己的原型,直到每个对象的原型为null为止
  • 任意一个函数都可以作为构造器即var someFun = new AnyFun()
  • 每个函数都有一个prototype属性,其它对象没有,该属性也是一个对象,该对象有一个constructor属性指向该函数
  • 使用new去实例化一个函数后,得到的是一个对象。该函数的实例的原型指向构造函数的prototype属性

API

1.instanceof,判断对象是否是构造函数的实例
2.getPrototypeOf()

函数对象和普通对象

函数对象:通过new Function(),得到的对象,有_proto_和prototype两个属性
普通对象:通过非Function()函数new得的对象,有_proto_一个属性
总结:凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。
图片描述

图片描述

面向对象思想写tab切换

a.定义构造函数,并确定实例拥有的属性b.给原型添加行为,即方法c.实例化对象

1.

    
面向对象Tab切换
div1
div2
div3

2.

    
面向对象TAB切换
1
2
3

3.

    
面向对象TAB切换
1
2
3
1
2
3

原型prototype、对象、构造函数

对象:属性跟方法的集合,属性是静态的数据,方法即行为,操作数据
构造函数:在函数的前面出现new关键字,js内置的构造函数,Date/Object/RegExp/String/Number/Boolean/Function
自定义构造函数:按照约定,首字母大写,跟普通函数区分
调用: new Person() 返回实例对象
var o = new Object();
Object.prototype === o.__proto__

原型prototype、对象、构造函数关系

对象是由构造函数创建,实例化的,字面量赋值,语法糖
对象的属性/方法的查找,a.先从自身查找,找到返回,b.找不到沿着原型链上查找,找到返回,找不到重复b步骤,直到顶级Object.prototype

构造函数、原型、实例三者之间的关系

构造函数:函数调用前存在关键字new的

a.定义,为了跟普通函数区分,按照约定首字母大写

b.调用时使用关键字new
c.返回值,创建出来的实例
d.内部的this,指向创建出来的实例

函数定义,必存在prototype属性,指向原型

原型:属性跟方法的集合,也是一个对象[__proto__]

实例:通过构造函数创建出来的对象必存在属性__proto__,指向原型,对象属性的查找,先从自身查找,找不到,沿着原型链从原型查找...

换句话说,对象的属性跟方法从原型上继承下来,对象的属性、方法可以重写

转载地址:http://wnoxx.baihongyu.com/

你可能感兴趣的文章
SplObserver观察者模式
查看>>
Dubbo架构设计详解
查看>>
使用JavaMail技术发送邮件
查看>>
[C++] 基础知识点:namespace
查看>>
Angular通过CORS实现跨域方案
查看>>
创建线程的四种方式
查看>>
大唐电信[600198]股票
查看>>
yii2 controller 接收get形式传输过来的参数
查看>>
Spring MVC控制流程与简易配置方案
查看>>
开启OpenStack Api跨域请求(CORS)功能
查看>>
拓步T66Ⅱ(牛牛2)Root教程
查看>>
redis的简单学习2.1-redis的数据类型
查看>>
《每个设计师都应该掌握的50个css代码段》11~20段
查看>>
C Primer Plus 第13章 文件输入/输出 13.11 编程练习答案
查看>>
JBoss 系列三十七:jBPM5示例之 Rule Task
查看>>
IOS9 微信支付报 prepayid 获取失败 ErrorDomainSSL, -9802
查看>>
iPhone 手机烧号的一些概念:五码烧号 vs OTA烧号
查看>>
maven模块化分解项目
查看>>
我们来判断一个php函数是否被定义
查看>>
The jQuery HTML5 Audio / Video Library
查看>>