js-原型以及继承小案例】的更多相关文章

本文由浅到深,循序渐进的将原型与继承的抽象概念形象化,且每个知识点都搭配相应的例子,尽可能的将其通俗化,而且本文最大的优点就是:长(为了更详细嘛). 一.原型 首先,我们先说说原型,但说到原型就得从函数说起,因为原型对象就是指函数所拥有的prototype属性(所以下文有时说原型,有时说prototype,它们都是指原型). 1.1 函数 说到函数,我们得先有个概念:函数也是对象,和对象一样拥有属性,例如: function F(a, b) { return a * b; } F.length…
名称:    prototype--原型对象    __proto__--属性 原型链与继承网上搜索定义,看起来挺绕的 .先说继承: 所有的对象实例都可以共享原型对象包含的属性和方法  例如一个实例A被XX所创建那么这个实例A就会继承XX.prototype .继承到哪里了那?继承到A.__proto__  属性里面了 . 这是一个最简单的原型链继承.然后我想b为什么没有prototype.然后有***找了一番理解一番得出: 每个对象都有 __proto__属性(并且指向该对象的构造函数的pro…
这是之前总结的, 发现有很多的毛病,就是重点不突出,重新翻看的时候还是得耗费很长时间去理解这玩意. js中的继承 js中什么是类 1,类是函数数据类型 2.每个类有一个自带prototype属性 prototype = constractor+__proto__ 3,每个类的实例指向类的原型 给人感觉子类继承父类的东西,和父类本身没啥关系, 和父类的财产(原型)有关系. console.log(document instanceof Document); // true console.log(…
本文争取用最简单的语言来讲解原型链继承的OOP原理 0.如果对原型继承还没有大致了解,完全一头雾水,请先阅读 <JavaScript高级程序设计>第六章最后部分的寄生组合式继承 或者_廖雪峰js教程里面面向对象部分的原型承部分https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014344997013405abfb7f0e1904a04ba6898a384b1e925000 1…
导语1:一个构造函数的原型对象,其实就是这个构造函数的一个属性而已,属性名叫prototype,值是一个对象,对象中有一些属性和方法,所以每个构造函数的实例对象都拥有这些属性和方法的使用权. 导语2:构造函数需要用 new 操作符来调用,它本身没有任何意义,只有实例化后才有生命,当然你也可以把它当普通函数使用,那this就是指向window了(意义不大). 导语3:对于构造函数实例化出一个对象经历了什么?   我们看下面这个例子: 这个例子充分说明了,大佬们创造出构造函数这种东西,是有特殊用处的…
//所有的函数都有一个prototype属性 function aa() { } console.info(aa.prototype); //这个prototype属性引用了一个对象,即原型,初始化时是一个空对象,也就是没有一个成员(即原型属性和原型方法). var i = 0; for (j in aa.prototype) { console.info(j); i++; } alert("member: " + i);//alert出原型所有属性和方法个数. 0个属性和方法 fun…
demofunction Fun(){}
var foo = new Fun();foo.__proto__ === Fun.prototype 摘要 1.js本身不提供类实现,es6引入了class,但只是语法糖.通过原型这种机制,JavaScript 中的对象从其他对象继承功能特性.2.对象有__proto__属性,如foo.__proto__指向foo的原型.3.函数有prototype属性,Fun.prototype指向构造函数Fun创建的实例对象的原型.4.foo.__proto__.…
前言 在学习JS中的原型,原型链,继承这些知识之前,我们先学习下基础知识:函数和对象的关系.  我们一直都知道,函数也是对象的一种,因为通过instanceof就可以判断出来.但是函数和对象的关系并不是简单的包含和被包含的关系,这两者之间的关系还是有点复杂的.接下来我们就来捋一捋. 首先,阐述一点,对象都是通过函数创建的 对于下面这种类型的代码,一般叫做“语法糖” var obj = {a:10,b:20}; var arr = [5, 'x', true]; 但是,其实上面这段代码的实质是下面…
function human(name,tall){ this.name=name; this.tall=tall; this.toSleep=function(){ alert('no sleep'); } } human.prototype.toSleep=function(){ alert('sleep'); } var meimei=new human("meimei",160); var xiaoqiang=new human("xiaoqiang",17…
继承普通版 继承逻辑上都差不多,普通版调用方式比较繁琐,不利于反复大量的使用: (function (){ //创建一个人员类 function Person(name){ this.name = name; } //创建教师类 function Teacher(name,books){ //call方法可以将一个函数的对象上下文从初始化变成由this来决定: //调用person的构造函数,因为person没用new,所以他是个空对象: //相当于Java中的super函数: Person.c…