JS基础丨 13. 原型及原型链

01. 构造函数

01. 构造函数
	01. 构造函数的创建
		01. 普通函数用new关键字创建
		02. new 构造函数:不占内存
		03. 构造函数即是类
		04. 写在构造函数中的属性为私有化
		05. 写在原型中的属性与方法为共有的
	
	02. 构造函数原型上的属性及方法:
		01. 字面量创建构造函数的原型属性及方法;
		02. 构造器指回自身: constructor: Person;
		03. 原型上的属性及方法被所有的实例化对象所共享;
	
	03. 原型的缺点:
		01. 所有的对象都是共享的,一个修改全局影响
		02. 不能像构造函数创建对象一样赋值: var person = new Person("jazz",20,"boy");

02. 原型: 是类(构造函数)自带的属性prototype

02. 原型: 是类(构造函数)自带的属性prototype
	任何一个函数都具备的属性
	该属性是有个指针,指向一个对象
	原型可以被任何一个构造函数共享其属性
	 
	作用:可以通过prototype属性给类添加自定义属性或者方法
	优点:原型创建的自定义属性和方法是共享的(节省内存),构造函数创建的属性和函数则是私有的;

03. prototype、protptype、__proto__

03. prototype、protptype、__proto__
 
	0.1 constructor: 原型对象prototype的属性 --> 指向当前原型的构造函数
		构造函数的.prototype.constructor === 构造函数
	 
	0.2 protptype: 构造函数的属性 --> 指向原型
		__proto__: 是实例对象的属性, 指向构造函数所指的原型
	 
		实例化对象.__proto_ === 构造函数.prototype
	
	
	0.3 使用字面量创建原型的问题:
		(构造函数.prototype.constructor === 构造函数)// false

04. 实例化对象与构造函数及其原型的关系

04. 实例化对象与构造函数及其原型的关系
	01. 构造函数.prototype.isPrototypeof(): 是原型对象的方法,可以判断此对象是否指向该原型
		01. 查找对象的属性:查找实例对象中,是否存在该属性,如果有就返回该属性的值
		02. 如果没有,查找原型对象中是否存在该属性!如果存在,则返回该属性的值
	
	02. 实例化对象上, 能够使用的属性方法:
		01. 构造函数的原型,添加自定义属性
		02. delete: 直接删除对象属性
		03. 先从构造函数中取值,未找到再从原型中取值
	
	03. 实例化对象上, 使用属性的来源:
		01. in: 判断某属性是否存在构造函数或者原型中
			console.log("name" in obj);// 存在为 true
		
		02. hasOwnProperty() 判断是否为实例对象的属性(不会去原型中找)
			
		
		03. 判断某属性是否仅存在原型中: (in方法判断)==true && (hasOwnProperty)==false
			function isInPrototype(obj, name){
				return (name in obj) && (!obj.hasOwnProperty(name))
			}
			console.log(isInPrototype(abox,"name"));// true

0.5 组合继承

0.5 组合继承
	组合继承: 原型链+借用构造函数(对象冒充)
	借用构造函数来(对象冒充),继承属性
	可以使用原型链来继承方法

0.6 Object对象的常用方法:

0.6 Object对象的常用方法:
	Object.hasOwnProperty( ) 检查属性是否为实例化对象的属性
	Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型
	Object.propertyIsEnumerable( ) 是否可以通过for/in循环看到属性
	
	Object.toString( ) 定义一个对象的字符串表示
	Object.toLocaleString( ) 返回对象的本地字符串表示
	
	Object.valueOf( ) 指定对象的原始值

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值