对原型链的理解 语言表达能力不好 直接用代码,哈

分享一下 我对原型和原型链的理解

原型对象:

function People(nameValue,ageValue,fondValue)
            {
                this.name = nameValue;
                this.age = ageValue;
                this.fond = fondValue;
            }

People.prototype.rule = function()
            {
                console.log(this.name+‘说:人人皆需奉献,人人都有一死‘)
            }
            
            People.prototype =
            {
                insteresting:‘烤红薯‘,
                work:function()
                {
                    console.log(‘搬砖‘)
                }
            }
            var p1 = new People(‘大傻‘,25,‘哭‘)
            var p2 = new People(‘二傻‘,22,‘吃‘)

//            先从对象中找属性 找不到再从对象的原型中找该属性
            console.log(p1.insteresting)   
            
//            对象属性的修改影响不到原型的内容
            p1.insteresting = ‘大西瓜‘;
            
            console.log(p1.insteresting)  //大西瓜
           
            console.log(p2.insteresting)  //烤红薯
            
            
            People.prototype.insteresting = ‘大榴莲‘
            console.log(p2.insteresting)  //大榴莲

---------------------------------------------------------------------------------------------------------------

原型链:

function Baby(name,age,birthDay)
            {
                this.name = name;
                this.age = age;
                this.birthDay = birthDay;
            }
              
            Baby.prototype.eat = function(food)
            {
                console.log(this.name + ‘吃了‘ + food)
            }
            Baby.prototype.sleep = function(time)
            {
                console.log(this.name +‘睡了‘ + time + ‘个小时‘)
            }
            
            var baby = new Baby(‘葫芦娃‘,1,new Date(2017,1,1))
           
            console.log(baby.name)
            
            baby.eat(‘奶粉‘)
            baby.sleep(‘18‘)
            
            function Child(name,age,birthDay)
            {

// call函数用于改变函数中this的指向,用于对象A调用对象B的方法
                Baby.call(this,name,age,birthDay)
            }
            
//           Child.prototype =  Baby.prototype;
//           ----总结:上面这种方法虽然也能实现但是错误的    原型共享同一块内存地址
//               直接让两个原型相等的话 Child的prototype和Baby的prototype是同一个prototype
//               如果修改Child的prototype或者Baby的prototype 会引起另一个对象原型的改变

//下面这种方法才是对的  让Child继承Baby的原型
                function Temp(){ }
                Temp.prototype = Baby.prototype;
                var temp = new Temp();
                Child.prototype = temp;
//           或者这种也可以
//           Child.prototype = new Baby()
//              
//           Child.prototype.constructor =  Child;
            
            Child.prototype.study = function()
            {

console.log(‘好好学习,天天向上‘)
            }
            
            Child.prototype.play =function(game)
            {
                console.log(this.name + ‘喜欢玩‘ +game)
            }
            
            var child = new Child(‘萝莉‘,16,new Date(2000,1,1))
            
            console.log(child.name)
            console.log(child.age)
            child.play(‘抓娃娃‘)
            
            child.study()
            
            child.eat(‘哈根达斯‘)
            child.sleep(9)

欢迎补充,谢谢。

时间: 2024-10-10 10:47:48

对原型链的理解 语言表达能力不好 直接用代码,哈的相关文章

原型链的理解

### 原型链的理解 #### 概念 + javascript每一个对象**包括原型对象**都有一个内置的`proto`属性指向创建他的函数对象的原型对象,即`prototype`属性 #### 作用 + 实现对象的继承 ### 理解 1.函数对象 + 在javascript中,函数就是对象 2.原型对象 + 当定义一个函数对象的时候,会包含一个预定的属性,`prototype`,这就属性称之为原型对象 3.\__proto__ + javascript 在创建对象的时候,都会有一个\_prot

面向对象(2 )构造函数 原型 原型链的理解

面向对象(2) 原型 原型链的理解 1.面向对象的目的就是生成对象object. 2.生成对象的方式 (1)单例模式(字面量定义)var obj={} (2)类的实例 var obj=new Object() (3)工厂模式 (4)构造函数 工厂模式和构造函数的区别? 工厂模式,生成的对象必须要返回,构造函数模式不用return,构造函数模式默认return旳是this,在构造函数内的this就是实例对象. 构造函数如果人为return的不是对象,直接忽略,如果人为return的是对象,就取代t

Javascript-我对作用链、闭包、原型及原型链的理解

Javascript-基础概念总结(2) 最近学习一些javascript基础知识,也解决了很多之前的疑惑,记得第一次被问及怎样理解闭包时,我的回答是:就是类似于封装吧!现在想想是有多白痴,学习技术是需要逻辑性很强的,技术注重用事实和数据说话,每一点都需要理解透彻,在技术上没有猜测,没有套路,以后自己在回答技术性的问题时,应做到知道就是知道,不理解或不太明白的,就诚实对待,这样有助于自己积累知识,了解自己的不足,从而提升自己.讲了那么多题外话,是为了让自己认识到应真诚的对待学习.下面是一些我的知

JavaScript原型链的理解

一.原型链的概念 JavaScript是一门面向对象的编程语言,JavaScript 中的所有事物都是对象,并且对象与对象之间不是彼此独立的,而是有"继承"关系的. 这种"继承"关系与Java或者C#中的继承不同.Java或C#中是有类的概念的,子类继承父类,通过extends关键字实现:而JavaScript中没有真正意义上的class(类),但有与之类似的概念--原型对象:A继承B,则A的"__proto__"属性会指向B的"pro

关于javascript中原型和原型链的理解

对于js中的原型以及原型链,笔者一直觉得有些迷惑,对于其中的概念是大致理解的,但是如果让笔者说出来就感觉比较难以清晰的表达出来,所以就在这里做一下总结,有疑问的时候再翻出来回顾一下 首先,我们看一段代码 function Person() { } var person = new Person(); console.log(person); console.log(Person); console.log(Object) console.log(person.prototype); consol

JS原型链的理解

<JavaScript高级程序设计>是一本好书,下面总结一下书中关于原型链的讲解. 本文从对象的创建开始,逐渐引出原型链的背景.作用以及ECMA对原型链的定义1.理解对象两种常用的创建对象的方法之一是new一个Object对象,并为它添加属性和事件var person = new Object();person.name = "wzk";person.age = 24;person.sayName = function(){ alert(this.name);}; 另一种是

前端基本知识(二):JS的原型链的理解

之前一直对于前端的基本知识不是了解很详细,基本功不扎实,但是前端开发中的基本知识才是以后职业发展的根基,虽然自己总是以一种实践是检验真理的唯一标准,写代码实践项目才是唯一,但是经常遇到知道怎么去解决这个问题,但是不知道使用的是什么一种方法,方法的原理是什么,现在觉得大学里学习的基本知识还是很重要的,一定有自己的理解才能走的更远. 无论以后自己的学习新的技术,但是万变不离其宗,基本扎实,学习效率高. 废话这么多,开始了今天理解的四部分部分. 一.JS的原型链理解方式 二.原型理解 三.规则 四.j

JS原型、原型链深入理解

原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性. 一.初识原型在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承,JavaScript的对象中都包含了一个”[[Prototype]]”内部属性,这个属性所对应的就是该对象的原型.“[[Prototype]]”作为对象的内部属性,是不能被直接访问的.所以为了方便查看一个对象的原型,Fir

JS中原型链的理解

在谈原型链之前,我们首先要了解自定义函数与 Function 之间是什么关系,而构造函数.原型和实例之间又存在什么千丝万缕的关系呢?其实,所有的函数都是 Function 的实例.在构造函数上都有一个原型属性 prototype,该属性也是一个对象:那么在原型对象上有一个 constructor 属性,该属性指向的就是构造函数:而实例对象上有一个 _proto_  属性,该属性也指向原型对象,并且该属性不是标准属性,不可以用在编程中,该属性用于浏览器内部使用. 1 // _proto_ 2 在函