是一种基于对象的语言,对于实现继承,网上也有很多方法,但是感觉各种实现都没那么干净利落。
首先谈谈自己对javascript的对象简单的理解,相比较静态面向对象语言的元数据不可变,javascript中,一切基于对象,包括对象的原型链、构造函数等都是可变的(自己觉得应该是元数据的东西,当然他们如果他们不可变,javascript就不是javascript了)。这让自己以前习惯的处理对象关系方法无法适从,总觉得不踏实,毕竟他们是可变的。虽然可变有可变的好处,但是对于静态面向对象语言来说,继承都是语言级别的实现。而javascript中他们实现的途径各种各样,但是基本都是借助原型或者通过其他方式实现自己的继承关系。
对于javascript中的对象以及继承,自己觉得可能更适合基于规则或者契约来构建,毕竟他太灵活了,扩展性也很强。这种灵活和扩展带来的好处不用多说,但是问题也同样多,当然很多问题是人为造成的。灵活容易造成不规范不统一,造成交流困难。
对于javascript实现继承的复杂性,首先,继承的本质其实也是重用,而在javascript中,像比静态语言,javascript重用的不仅仅是结构,他还能重用状态[原型是一个对象],同时对于对象的任何属性(包括函数),都是可以脱离对象单独存在但是仍然可以访问当前对象上下文(他们本身就是对象,而且可以访问绑定的对象this),所以同样可以单独重用其他对象的属性和方法。大部分框架都提供多种扩展方法。也因为javascript中对象各种属性和方法的独立型,所以即便是在构造时规范好继承关系,通过对象的属性和方法添加删除修改,这种关系也很难说还是原来的关系。所以觉得这种关系只能用来规范或者作为设计约束,而实际上无非保证这种关系的持久性。同时对于面向对象中组合优于继承来看,扩展应该比继承容易得多,尤其对于javascript,相信include和extend对于很多人来并不陌生。当然继承也有他的用武之地,尤其是约束对象关系的时候。但是继承的实现,如果不是使用环境特别苛刻,继承的实现只是选择性问题。
分享到:
相关推荐
文档"js代码杂谈总结.doc"显然包含了作者对JavaScript语言的理解和经验总结。 在JavaScript中,核心概念包括变量(variables)、数据类型(data types)、控制流(control flow)、函数(functions)、对象...
JavaScript 四种时尚程序展示了 JavaScript 的强大功能和灵活性,包括查看源代码、动画 GIF 移动程序、VB 经验杂谈和随机文件存储等。通过学习和实践这些示例代码,我们可以更好地掌握 JavaScript 的技巧和方法。
标题中的“杂谈----1 显示横向滚动条”暗示了我们将会探讨的是关于在界面设计中如何实现或处理横向滚动条的技术问题。这通常涉及到前端开发,特别是网页或应用程序的用户界面(UI)部分,其中可能包括HTML、CSS和...
——这就要从JAVASCRIPT的解释器开始说起了:每当JAVASCRIPT解释器开始执行一个函数的时候,都会创建一个执行环境,并且还会产生一个和这个函数息息相关的变量对象,在这个执行环境中定义的一切变量或者函数都会被他...
本文将深入探讨WebView的相关知识点,特别是如何加载并执行JavaScript代码。 首先,WebView是Android SDK提供的一种用于在应用程序中显示网页的视图。它支持基本的浏览功能,如前进、后退、加载URL等,同时也支持与...
首先,编程语言的学习与实践部分可能会对编程新手非常友好,这里可以介绍一些当前市场上流行的语言,比如Python、Java、JavaScript等,并且给出学习这些语言的步骤、技巧和最佳实践。同时,对于经验丰富的开发者来说...
ODOO是一个开源的ERP(企业资源规划)和OA(办公自动化)系统,它采用前后端分离的架构,前端基于JavaScript,而后端可以使用多种语言如C#、Java或Python进行开发。 在前端设计上,ODOO对JavaScript库进行了封装,...
随着Ajax技术的出现、盛行,本被忽视认为是二流编程语言的JavaScript脚本也开始了新的盛行,大量的JavaScript框架的出现如Microsoft Asp.Net Ajax、jQuery等。Ajax已经成为这些脚本框架必不可少的组成部分了,而且...
在JavaScript编程中,事件处理是不可或缺的一部分,尤其是在创建交互式网页时。然而,不同浏览器对事件处理的支持存在差异,这主要归因于JavaScript的三种事件模型:NN4、IE4+和W3C/Safari。本文主要探讨了IE和Fire...
首先,"杂谈"往往意味着跨领域的知识,这可能包括但不限于编程语言的技巧、软件开发的最佳实践、系统架构设计、数据库管理、网络协议、数据结构与算法、操作系统原理等。例如,可能有对Python语言的高级用法讲解,...
1. 布局设计:使用Dreamweaver cs3建立布局,采用CSS(层叠样式表)进行美化,实现内容与表现的分离,提高后期维护的效率。CSS的特点包括结构与样式分离、精确到像素级别的样式定义和多套样式支持。布局方法采用div+...
JavaScript Vue3 性能 浏览器和网络 CSS 前端实践技巧 Flutter 数据结构与算法 面试相关 设计模式 LeetCode系列 Python 机器学习 大数据 技术杂谈 最后 如果有疑问或者发现错误,可以提issue进行提问或勘误。 欢迎...
################################... 另外,建议Javascript基础不是太好的同学去找些书籍看看,书籍有很多,不过我只看过Javascript高级编程,现在应该已经出到第三版了,个人感觉挺好的,有需要的同学可以度娘一下!
前端杂谈 工作杂谈 前端面试 小程序应用 深入理解小程序 全员学Vue 小程序开发月刊 打字稿相关 一步一步走向应用开发 前端入门 Vue2动画 D3.js-Tree实战笔记 Vue2笔记 纯前端的进军 ...
微信小程序由JSON配置文件、WXML(Weixin Markup Language)结构文件、WXSS(Weixin Style Sheet)样式文件和JavaScript逻辑文件组成。JSON配置文件用于定义页面路由、网络请求等;WXML文件负责布局和视图展示;WXSS...
设置关于当前设置的一些杂谈。标准 获取一个支持此功能的编辑器插件; 或通过转到npm install -g standard安装CLI。React0.14-RC1 最血腥的边缘。 看到它与其他孩子的互动状况会很有趣。Webpack 为了便于热重装使用...