分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

js原型和原型链

发布时间:2023-09-06 01:44责任编辑:苏小强关键词:js

我们要理解js的原型,首先需要知道5条js原型规则:

1.js引用类型(function ,array ,object)都可以任意扩展自己的属性。

 1 function fn(){ 2 ?3 } 4 fn.age=10; 5 console.log(fn.age);//10 6 ?7 var arr=[1,2,3]; 8 arr.name=‘keke‘; 9 console.log(arr);//[1,2,3,name:"keke"]10 11 var obj={12 ????age:20;13 }14 obj.name=‘xixi‘;15 console.log(obj);//{age:20,name:‘xixi‘}

2.所有的引用类型都有一个__proto__属性,这个属性值是一个普通对象。

1 var arr=[];2 console.log(arr.__proto__);3 var obj={};4 console.log(obj.__proto__);5 var fn=function(){};6 console.log(fn.__proto__);

3.所有函数都有一个prototype属性,这个属性值也是一个普通对象

1 var fn=function(){};2 console.log(fn.prototype);


4.一个对象的__proto__属性值指向这个对象的构造函数的prototype的属性值

1 function Animal(name,age){2 ????this.name=name;3 ????this.age=age;4 }5 var cat=new Animal(‘heihei‘,13);6 console.log(cat.__proto__===Animal.prototype);//true

5.当查找一个对象的属性时,若在对象本身找不到,可以去它的__proto__(即它的构造函数的prototype)上去找。

 1 function Animal(name,age){ 2 ????this.name=name; 3 ????this.age=age; 4 } 5 Animal.prototype.sayName(){ 6 ????console.log(this.name); 7 } 8 var cat=new Animal(‘heihei‘,13); 9 console.log(cat.__proto__===Animal.prototype);//true10 cat.sayName();//‘heihei‘

原型链

根据原型的第五条规则,当访问一个对象的属性时,会先在对象本身上去找,本身找不到后,会去它的__proto__上找,如果这里还是找不到,就会继续找__proto__.__proto__,因为这个__proto__的值也是一个对象,它也会有自己的__proto__属性,就这样....形成一条原型链。

 1 function Animal(name,age){ 2 ????this.name=name; 3 ????this.age=age; 4 } 5 Animal.prototype.sayName(){ 6 ????console.log(this.name); 7 } 8 var cat=new Animal(‘heihei‘,13); 9 console.log(cat.__proto__===Animal.prototype);//true10 cat.sayName();//‘heihei‘11 cat.toString();

使用for..in可以列举一个对象的所有属性

1 var item;2 for(item in f){3 ????//在高级浏览器中for..in只能遍历对象自身的属性,但为了兼容性,需要写以下语句4 ????if(f.hasOwnProperty(item)){5 6 ????}7 }

js原型和原型链

原文地址:https://www.cnblogs.com/cherryshuang/p/8505919.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved