摘要:化伪花猫伪,花,猫借助构造函数无论是原型链还是原型式继承,都有相同的问题。要解决这样的问题,可以借助构造函数也可以叫做伪造对象或经典继承。对于继承来讲,可以试想子对象的构造函数中调用父对象的构造函数时,讲子对象的和父对象的绑定在一起。
继承 原型式继承
所谓原型式继承,就是定义一个函数,该函数中创建一个临时性的构造函数,并将作为参数传入的对象作为这个构造函数的原型,最后返回这个构造函数的实例对象
function object(o){ dunction F (){ F.prototype = o return new F() }
根据原型式继承所总结的object()函数实现继承,如下列代码:
var person ={ name : "花", friends : ["伪","化"] } var result = object(person); result.friends.push("猫"); console.log(result.freends);//伪,化,猫
这种原型式继承要求必须具有一个对象可以作为另一个对象的基础。
上述原型式继承,也可以用Object的create()方法代替自定义的object()函数,从而是想规范化。
var person = { name : "化" friends : ["伪","花"] } var anotherperson = Object.create(person); anotherperson.friends.push("猫"); console.log(anotherperson.friends);//伪,花,猫借助构造函数
无论是原型链还是原型式继承,都有相同的问题。要解决这样的问题,可以借助构造函数(也可以叫做伪造对象或经典继承)。
这种方式实现非常简单,就是在子对象的构造函数中调用父对象的构造函数。具体可以通过调用apply()和call()方法实现。
apple()和call()都允许传递指定某个对象的this。对于继承来讲,可以试想子对象的构造函数中调用父对象的构造函数时,讲子对象的this和父对象的this绑定在一起。
function Fun (){ this.color = "蓝" } function Fn(){ Fun.call(this); } var result = new Fn result.color;//蓝组合方式继承
组合继承,也叫做伪经典继承,指的是将原型链或原型式继承和借助构造函数的技术组合在一起,发挥二者的长处的一种继承方式。
使用原型链或原型式继承实现对原型的属性和方法的继承。
通过借助构造函数实现对实例对象的属性的集成。
function Fun (name){ this name = name; } Fun.prototype.sayname = function(){ console.log(this.name); } function Fn (name,age){ Fun.call(this.name);//继承属性 this.age = age; } Fn.prototype = Fun.prototype;集成方法获取Date()对象
var d1 = new Date();// 构造函数 var d2 = Date();// 函数 console.log(d1); console.log(d2); var d3 = new Date; console.log(d3);获取日期
var d = new Date(); console.log(d.getDate());// 17 console.log(d.getDay());// 5 console.log(d.getFullYear());// 2018 console.log(d.getYear());// 118 - 表示距离1900年的年份 // 获取当前时间的毫秒数 console.log(d.getMilliseconds()); // 获取毫秒数 - 距离1970-1-1 0点0分 console.log(d.getTime()); /* 毫秒数的实际应用: 1.将毫秒数作为标识(ID) 2.将毫秒数作为时间戳 */Math类型
// 不能创建对象 - TypeError: Math is not a constructor // var m = new Math(); // console.log(m); console.log(Math.PI); console.log(Math.floor(6.5));// 6 console.log(Math.max(4,8));// 8 var arr = [3,1,6,8,25]; console.log(Math.max.apply(null,arr));// 25 // 生成随机数 - 只能生成 0 ~ 1 之间的随机数 console.log(Math.random()); // 生成 0 ~ 100 之间的随机数 console.log(Math.random() * 100); // 生成 1 ~ 100 之间的随机数 console.log(Math.random() * 99 + 1);
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/108357.html
摘要:这正是我们想要的太棒了毫不意外的,这种继承的方式被称为构造函数继承,在中是一种关键的实现的继承方法,相信你已经很好的掌握了。 你应该知道,JavaScript是一门基于原型链的语言,而我们今天的主题 -- 继承就和原型链这一概念息息相关。甚至可以说,所谓的原型链就是一条继承链。有些困惑了吗?接着看下去吧。 一、构造函数,原型属性与实例对象 要搞清楚如何在JavaScript中实现继承,...
摘要:中的继承并不是明确规定的,而是通过模仿实现的。继承中的继承又称模拟类继承。将函数抽离到全局对象中,函数内部直接通过作用域链查找函数。这种范式编程是基于作用域链,与前面讲的继承是基于原型链的本质区别是属性查找方式的不同。 这一节梳理对象的继承。 我们主要使用继承来实现代码的抽象和代码的复用,在应用层实现功能的封装。 javascript 的对象继承方式真的是百花齐放,属性继承、原型继承、...
摘要:继承前言作为一门轻量级的脚本语言在和的横空出世之后将其推向的新的高度虽然中出现的新的生成对象的类语法格式但依然为的语法糖而我们依然有必要从的原生实现入手来了解它的继承实现方式给出了更加简洁的固定的类声明方式有兴趣的可以查看阮一峰的入门下面给 javascript继承 前言 javascript作为一门轻量级的脚本语言在ES6和node.js的横空出世之后将其推向的新的高度,虽然 ES6...
摘要:我们有了构造函数之后,第二步开始使用它构造一个函数。来个例子这种方式很简单也很直接,你在构造函数的原型上定义方法,那么用该构造函数实例化出来的对象都可以通过原型继承链访问到定义在构造函数原型上的方法。 来源: 个人博客 白话解释 Javascript 原型继承(prototype inheritance) 什么是继承? 学过面向对象的同学们是否还记得,老师整天挂在嘴边的面向对象三大特...
摘要:和构造函数前面提到,是个内置隐藏属性,虽然在可以通过访问,但是其设计本意是不可被读取和修改的,那么我们如何利用原型链来建立继承关系提供了关键字。到这儿,思路就清晰了,怎么让对象和对象的相连实现继承只需把的构造函数的连接到就行了。 什么是继承? 大多数人使用继承不外乎是为了获得这两点好处,代码的抽象和代码的复用。代码的抽象就不用说了,交通工具和汽车这类的例子数不胜数,在传统的OO语言中(...
阅读 3682·2021-11-17 09:33
阅读 2631·2021-09-22 15:12
阅读 3309·2021-08-12 13:24
阅读 2390·2019-08-30 11:14
阅读 1692·2019-08-29 14:09
阅读 1305·2019-08-26 14:01
阅读 3024·2019-08-26 13:49
阅读 1737·2019-08-26 12:16