javascript的继承是通过prototype这个属性实现的。
每个javascript的变量都是一个对象,每个对象都有它自己的 原型(prototype),而每个对象默认的原型是 Object,和大多数面向对象语言一样,对象的祖先是 Object。
我们使用js对象的时候,通过 对象名.属性 来调用。当对象本事不包含该属性的时候,会去查找对象的 原型(Prototype),如果原型里头包含了属性,那么就调用该属性的值。如果对象prototype中依然不包含该属性,那么这次调用返回的值是 undefined。
如果修改一个对象的prototype呢?参照《javascript语言精粹》中是这么修改的
if(typeof Object.beget !== 'function') {
Object.beget = function(o) {
var F = function(){};
F.prototype = o;
return new F();
}
}
//这么调用 beget 修改 prototype
var newObj = Object.beget(oldObj);
我们可以通过使用 对象.hasOwnProperty('属性')方法来测试该属性是不是真正属于该对象。
分享到:
相关推荐
JavaScript函数学习总结以及相关的编程习惯指南 在JavaScript中,函数是一种强大的工具,它们不仅可以作为代码块执行,还可以作为值传递。在深入探讨函数之前,我们先来了解两个基础概念:`null` 和 `undefined`。 ...
JavaScript匿名函数的应用主要...总结来说,JavaScript的匿名函数是实现代码封装和模拟私有变量、方法的重要工具,同时也为实现继承提供了基础。通过深入理解这些概念,JS开发者能够编写出更优雅、更易于维护的代码。
本文档总结了前端开发面试的自我介绍,涵盖了 JavaScript 类型转换、类的创建、继承和闭包、get 和 post 请求的区别、事件绑定和事件冒泡机制、图片轮播脚本、图片加载优化、Servlet 生命周期、模板引擎 Velocity 等...
首先,jQuery 源码以一个自调用匿名函数的形式开始,这种结构在JavaScript中称为自我执行函数表达式(Self-executing Anonymous Function Expression)。这样做主要有两个目的:一是创建一个独立的作用域,避免污染...
例如,你可以学习如何使用JavaScript的`Array.prototype`方法(如`map()`、`filter()`和`reduce()`)来处理数组数据,或者利用`String.prototype`方法进行字符串的拼接、查找和替换。 接着,进阶到数据结构的学习。...
总结来说,Boss-Up是一款融合了JavaScript编程技巧和创新玩法的游戏。它不仅提供了一个娱乐的平台,也是一本生动的JavaScript编程实战教材。玩家在享受游戏的同时,也能深入理解编程原理,提高自己的技术能力。无论...
JavaScript中的`Array.prototype.permute`方法可以生成全排列,结合问题的特定约束,即可得出答案。 2. **问题B - 大案例挑战**: 对于复杂度较高的问题,比如涉及到图论或动态规划的题目,可以利用JavaScript的...
熟悉阶段应熟悉JavaScript的高级特性,如函数、正则表达式等,并能利用jQuery或Prototype等框架简化开发。在很熟悉的阶段,应能使用面向对象的思想编写JavaScript代码,熟练使用Ajax技术和各种前端框架来实现复杂的...
总结,"leetcode-js"是一个宝贵的资源,它不仅提供了LeetCode题目的JavaScript解决方案,也是学习和提升算法思维的有效途径。对于系统开源的倡导者,分享这样的资源有助于整个社区的成长和进步。通过深入研究和实践...
总结起来,这个压缩包可能包含了一个使用ESM实现的低保真前端交互设计项目,涵盖了模块化编程、前端开发流程、交互设计原则等多个方面的知识。对于学习和实践前端开发,尤其是理解和运用ESM的开发者来说,这是一个有...
JavaScript是前端开发的核心语言,许多框架如jQuery、YUI、Prototype、Dojo、Ext.js和MooTools等简化了DOM操作和事件处理。jQuery中的`$()`函数是其核心API,用于选择和操作DOM元素。`window.onload`事件在所有资源...
总结一下,JavaScript的"arguments"对象提供了一种灵活的方式来处理函数调用时的参数,不论参数数量是否预知。通过arguments.length,我们可以获取参数个数,arguments.callee则为函数自我引用提供了可能。然而,...
总结来说,jQuery插件封装是通过扩展`jQuery.fn`来实现的,利用自我执行函数保护`$`符号,理解`this`关键字的上下文,保持链式调用的流畅性,以及为插件提供默认值和可配置选项。掌握这些技巧,开发者可以构建出强大...