原型设计

JavaScript原型链(Prototype)的设计思想

回眸只為那壹抹淺笑 提交于 2019-12-02 20:53:47
对于Java语言开发者来说,“对象继承、父类子类、类和实例”根深蒂固,理解Javascript语言的继承机制,难免会“转不过弯来”。阅读和引用了一些大师们的文章,自我总结一下Javascript为什么设计成“原型链”的模式? 首先从诞生说起,1994年网景公司(Netscape)发布了Navigator浏览器0.9版,为了让 浏览器可以与网页互动 ,工程师 Brendan Eich 负责开发这种语言,即最初的Javascript。C++是当时最流行的语言,而Java语言也开始风生水起,因此设计者 Brendan Eich 受到了极大的影响:“ Javascript里面所有的数据类型都是对象(object) ”!接下来,如何把对象连接起来就要考虑“继承”了,可能是 Brendan Eich 考虑到不想把javascript搞得那么复杂(满足基本交互应用即可,或者为了降低初学者难度),或者认为不引入“Class”依然可以设计出更巧妙的模式来,总之,他没有设计“类Class”的概念。 还是从面向对象的思想来设计JavaScript语言。Java里从原型对象生成一个实例对象:Animal dog = new Animal();因而 Brendan Eich 使用了new关键字;接下来java里new时会调用“构造函数constructor”,在Javascript里是这样设计的

JavaScript面向对象小抄集

泪湿孤枕 提交于 2019-12-02 20:18:00
前言 本文旨在记录JavaScript中面向对象的基础知识 搞明白JavaScript中的面向对象 一切都是对象 JavaScript中,除了基本类型外,其它类型都是对象类型 所谓对象就是若干属性的集合 数组、函数等都是对象,对象还是对象。像Number、Array、Function等这些函数,就是JavaScript默认的内建对象,可以直接使用 ,因此也常说JavaScript是基于对象的语言 对象里面的一切都是属性,方法也是属性,依然表示为键值对的形式 函数也可以有对象属性,其中JQuery中的$就是一个函数,$.trim()中的trim()就是函数$中的一个方法属性 JavaScript中的类型分为两种 值类型(非对象):undefined, number, string, boolean 引用类型(对象): 函数、数组、对象、null、new Number(10)、new String("1")、new Array(1) 等 判断对象方式: 使用 typeof : 当返回时"function"或者"object"字符串说明是引用类型对象 使用 instanceof :通过 obj instanceOf Object 返回true判断对象 所有对象都是继承自 Object对象 的 ,Object对象包含了一些通用的方法如 hasOwnProperty ,

JavaScript——面向对象编程

ⅰ亾dé卋堺 提交于 2019-12-02 16:49:10
什么是面向对象? 面向对象编程(Object Oriented Programming,OOP编程)是一种计算机编程架构,它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征 面向对象的目的 重用性: 针对相同功能可以重复地使用程序。 灵活性: 针对差异性的功能做出调整与适配。 扩展性: 针对功能的变化做出添加或删除的改进。 面向对象的特性 封装性: 封装是一种信息隐蔽技术,使得用户只能见到对象的外特性,而对象的内特性对用户是隐蔽的。封装的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为实现的细节,子须用设计者提供的接口来访问该对象。 继承性: 复用一些原有的功能,同时可修改和扩充。 多态性: 对象根据所接收的信息而做出动作。同一信息为不同的对象接受时可产生完全不同的行动。 面向对象的组成 属性(property): 描述一种状态 方法(methods): 描述一种行为 程序中: 变量就是属性,函数就是方法 创建面向对象程序 在面向对象编程中,是通过“类”来创建对象的,类相当于模具。根据传递的数据来创建对选哪个,并且可以重复的创建对象。 在ES6之前的JavaScript版本中,是没有类的概念的,不过可以利用构造函数来代替类进行创建对象。

团队项目-需求分析

一笑奈何 提交于 2019-12-02 13:29:32
组长本次作业博客链接 一、组队后的团队项目的整体计划安排 阶段 主要任务 计划时间 内容 1 项目选题 第七周 选择可行性强并且能在带给福大学子便利的项目,完成项目描述市场调研,竞品分析等 2 需求分析 第八周 撰写需求分析说明报告,安排具体分工以及初步原型设计 3 设计分工 第九、十周 编码规范、平台环境搭建、初步架构搭建、明确细节分工 4 模块编程 综合对接 第十一、十二周 各模块编码、测试、项目管理同步推进、各模块完成后进行对接 5 测试反馈 第十三周 实景测试反馈优化、形成最终正式版本 6 优化完善 第十四周 根据测试反馈优化,形成最终正式版本 7 项目宣发 第十五、十六周 用户手册、发布、文案 二、团队分工 确定alpha版本需要做哪些事情 需要十分紧凑严格的任务安排,需要时间和熬夜,需要团队成员共同的努力和稳定输出... * alpha版本: 模块序号 模块名 模块具体内容 1 登录注册模块 完成用户的登录与注册 2 推荐模块 根据专业年级只能推荐书籍 3 搜索模块 买家自主搜索书籍,按关键字的相关度或者分类 4 交易模块 买家和卖家之间下单、线下交易 5 社区模块 用户间关于书籍的交流 6 个人基础信息模块 昵称、性别等个人信息的编辑存储 7 个性化模块 多样的界面 各成员分工明细及TODO list 成员 分工明细 TODO list 张逸杰 跟踪项目进程

JavaScript面试题(转)

前提是你 提交于 2019-12-02 12:02:06
JS相关问题 数组去重 function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } return temp; } var aa = [1,2,2,4,9,6,7,5,2,3,5,6,5]; console.log(aa) console.log(uniq(aa)) 1、谈一谈JavaScript作用域链 当执行一段JavaScript代码(全局代码或函数)时,JavaScript引擎会创建一个作用域又称为执行上下文(Execution Context),在页面加载后会首先创建一个全局的作用域,然后每执行一个函数,会建立一个对应的作用域,从而形成一条作用域链。每个作用域都有一条对应的作用域链,链头是全局作用域,链尾是当前函数作用域。 作用域链的作用是用于解析标识符,当函数被创建时(不是执行),会将this,arguments,命名参数和该函数中所有局部变量添加到该当前作用域中,当JavaScript需要查找变量X的时候(这个过程称为变量解析),它首先会从作用域链中的链尾也就是当前作用域进行查找是否有X属性,如果没有找到就顺着作用域链继续查找,直到查找到链头

设计模式(二)——原型模式

这一生的挚爱 提交于 2019-12-02 07:09:22
原型模式是用于创建重复的对象,同时能保证性能,属于创建型模式,提供了一种创建对象的最佳方式。 意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 主要解决:在运行期间创建和删除原型。 优点:提高性能,逃避了构造函数的约束。 #region 原型模式 public abstract class PrototypeClass { public PrototypeClass(string Name) { this.Name = Name; } public string Name { set; get; } public abstract PrototypeClass Clone(); } public class Prototype1 : PrototypeClass { public Prototype1(string Name) : base(Name) { } public override PrototypeClass Clone() { return (PrototypeClass)this.MemberwiseClone(); } } public class Prototype2 : PrototypeClass { public Prototype2(string Name) : base(Name) { } public override

JS面向对象编程

夙愿已清 提交于 2019-12-02 03:02:07
JavaScript 面向对象编程 面向对象介绍 什么是对象 Everything is object (万物皆对象) 对象到底是什么,我们可以从两次层次来理解。 (1) 对象是单个事物的抽象。 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。 (2) 对象是一个容器,封装了属性(property)和方法(method)。 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。 在实际开发中,对象是一个抽象的概念,可以将其简单理解为: 数据集或功能集 。 ECMAScript-262 把对象定义为: 无序属性的集合,其属性可以包含基本值、对象或者函数 。 严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。 提示:每个对象都是基于一个引用类型创建的,这些类型可以是系统内置的原生类型,也可以是开发人员自定义的类型。 什么是面向对象 面向对象不是新的东西,它只是过程式代码的一种高度封装,目的在于提高代码的开发效率和可维 护性。 面向对象编程 ——

UI的必修课——产品原型设计

眉间皱痕 提交于 2019-12-01 19:03:19
想要做好ui 设计 , 为什么要学习产品原型设计? 下面 小编就给大家简单分析一下其中的原因,希望对大家后期的学习有所帮助。 为了能够更好地实现自己的职业价值,设计师需要掌握更多其他方面的技能,其中产品原型设计就是比较典型的 ,具体有哪些呢? 一、快速入行需要 其实很多设计师一开始并不明白自己到哪一个程度,才算是真正的入门。当前市场上比较流行的产品原型设计工具很多,因此 ui 设计师需要掌握的技能还有很多,如果你想快速入行 ui 设计,可以考虑专业学习产品原型设计相关技能。 二、提高设计质量 掌握更多的知识,考虑问题也就会更加全面。当你掌握产品原型设计相关知识,你只需要专注于视觉层面的配色及阴影等效果,界面的布局和信息展示都不需要重点关注。有了这样的流程与专业分工,完成的产品设计质量将会更高。 三、加速沟通效率 在对产品原型没有概念的情况下,设计团队之间的沟通会面临相当多的阻碍。当我们掌握了原型设计的一些技能后,可以快速将心中所想的方案与创意通过可视化的界面呈现出来,就能够高效、准确地向别人展示我们的想法与创意。 ui 设计师为什么要学习产品原型设计? UI 设计师想要让自己的工作看起来更加轻松,并且进一步提升自己的优势,并且提升自己设计的产品的质量,并且提高团队沟通的效率,就需要对产品原型设计相关的知识进行较为深入的了解。 了解更多UI知识关注小编哦! 来源: https:/

js面向对象

廉价感情. 提交于 2019-12-01 18:28:58
一. JavaScript面向对象前言 1.1 什么是对象? Everything is object (万物皆对象)。 对象到底是什么,我们可以从两个层次来理解。 对象的组成 方法(有归属)----函数(自由的) 属性(有归属)----变量(自由的) 1.对象是单个事物的抽象 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。 2.对象是一个容器,封装了属性(property)和方法(method) 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等) 在实际开发中,对象是一个抽象的概念,可以将其简单理解为 : 数据集或功能集。 1.2 什么是面向对象? 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括模块化,多态和封装几种技术。今天,许多流行的编程语言(如Java,JavaScript,C#,C+ +,Python,PHP,Ruby和Objective-C)都支持面向对象编程(OOP)。 相对于「一个程序只是一些函数的集合,或简单的计算机指令列表。

JavaScrip构造函数

一个人想着一个人 提交于 2019-12-01 16:40:35
构造函数 工厂函数 工厂函数是一种特殊的函数,其目的是为了简化对象的创建 let createPerson = (name, age) => { return { name: name, age: age, say: function (){ // ... } } } let p = createPerson('zs', 18); 构造函数 构造函数与工厂函数一样都是为了简化对象的创建,构造函数本质就是工厂函数的简化 构造函数与工厂函数的不同: 构造函数的函数名首字母必须大写 构造函数不能直接调用,必须使用 new 关键字 function Person (name, age){ // let obj = new Object(); // let this = obj; this.name = name; this.age = age; this.say = function (){ // ... } // return obj; // 省略部分是JavaScript在执行过程中自行添加的 } let p = new Person('zs', 18); ES6中的构造函数 class Person(){ constructor(name, age){ // 构造函数中的代码块会在每次通过 new 创建对象时自动执行 // 构造函数中的属性以及方法在每次创建对象时