1.工厂模式 弊端:没有解决对象的识别问题,即怎么知道一个对象的类型. 2.构造函数模式 与工厂模式相比: 1.没有显式的创建对象 2.直接将属性和方法赋给了this对象 3.没有return语句 要创建person的实例,必须使用new操作符,以这样的方式调用构造函数实际上会经历4个步骤: 1.创建一个新对象 2.将构造函数的作用域赋给新对象 3.运行构造函数中的代码 4.返回新对象 创建自己定义的构造函数能够将它的实例标识为一种特定的类型. 构造函数的缺点: 每一个方法都有在每一个实例上又一…
1.js创建对象的几种方式 工厂模式 为什么会产生工厂模式,原因是使用同一个接口创建很多对象,会产生大量的重复代码,为了解决这个问题,产生了工厂模式. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ console.log(this.name); } return o; } var person1=createPers…
js中4种无节操的预解释情况 - 1. if语句即使条件不成立,条件里的表达式也会进行预解释. - 2. 匿名函数的预解释: 只对等号左边与解释 - 3. 自执行函数的预解释: 不进行预就解释, 执行的时候,定义+执行 - 4. return下面的语句也会进行预解释,但是return后面的语句不进行预解释 <script> var p1 = {name: "maotai"}; console.log(age); //1.即使条件不成立,条件里的表达式也会进行预解释. if…
javascript中创建对象的几种不同方法 方法一:最直白的方式:字面量模式创建 <script> var person={ name:"小明", age:20, sex:"男", hobby:function(){ console.log("打篮球"); } }; </script> 这种方法代码量多,用于“一开始就确定好内部数据类型的”对象创建. 方法二:调用系统构造函数创建 <script> var p…
相信但凡作为一个前端工程师,都被面试到过这个面试题目,HR考察的就是对oop思想的理解. 作为一个从后端转过来的怂逼,oop一直是心中的永远的痛啊. 这几天一直在通读js高级程序设计,重复理解js创建对象的几种方式,以及原型链和constructor等关键点. 谈到创建对象,我们要从最原始的方式说起,也是最简单的方式,就是直接创建一个Object实例,然后添加属性和方法. 简单方式 工厂模式 构造函数模式 原型模式 构造模式和原型模式组合使用 1.简单方式 var o=new Object();…
贴个代码先: function O(user,pwd){ //use constructor this.user=user; this.pwd=pwd; this.get=get; return this; } function O2(user,pwd){ //use factory var obj=new Object(); obj.user=user; obj.pwd=pwd; obj.get=get; return obj; } function O3(){ //use prototype…
JS高级---三种创建对象的方式 字面量的方式 (实例对象) 调用系统的构造函数 自定义构造函数方式 //创建对象---->实例化一个对象,的同时对属性进行初始化 var per=new Person("小红",20); 自动逸构造函数创建对象做的事情:   1.开辟空间存储对象   2.把this设置为当前的对象   3.设置属性和方法的值   4.把this对象返回 //实例对象 var per1 = { name: "小明", age: 20, sex:…
创建对象三种方式: 调用系统的构造函数创建对象 自定义构造函数创建对象(结合第一种和需求通过工厂模式创建对象) 字面量的方式创建对象 第一种:调用系统的构造函数创建对象 //小苏举例子: //实例化对象 var obj = new Object(); //对象有特征---属性:和 行为---方法 //添加属性-----如何添加属性? 对象.名字=值; obj.name = "小苏"; obj.age = 38; obj.sex = "女"; //添加方法----如何…
JS创建对象篇 Object构造函数创建 var person = new Object(); person.name = "Tom"; person.age = 10; person.sayName = function(){ alert(this.name); } 对象字面量 var person = { name : "Tom",//注意这边是以“,"分隔,而不是”;" age : 10, sayName : function(){ ale…
狭义:new 构造函数. (注:在JS中创建对象只有一种方式,就是new 构造函数.其中字面量的方式是一种语法糖,本质仍然是new 构造函数) 广义:工厂模式(解决复杂度) 构造函数模式(解决复杂度,可读性,其中可读性是指可以判断所创建对象的类型) 原型模式(解决复杂度,可读性,重复性) 构造函数与原型混合模式(解决复杂度,可读性,重复性,耦合性) (注:这些方式本质是为了解决代码可读性.复用性而对new 构造函数的一种应用) 参考:JS创建对象-脚本之家  更详细的创建对象细节…
js实现23种设计模式 最近在学习面向对象的23种设计模式,使用java 和 javascript 实现了一遍,但是因为目前大三,还没有比较正规的大项目经验,所以学习的过程种我觉得如果没有一定的项目经验的话很难去完全掌控,所以学习的过程中只是大致学习了每种设计模式的特点,我觉得在学习的过程中应该自己找场景实现,这样学习效果很好,下面是代码,当然仅供参考.下面是代码: 创建型模式 单例模式 三要素: 同一个实例 类自行创建实例对象 可向整个系统输出这个实例 分类: 饿汉式( 类加载到实例时创建实例…
重新理解js的6种继承方式 注:本文引用于http://www.cnblogs.com/ayqy/p/4471638.html 重点看第三点 组合继承(最常用) 写在前面 一直不喜欢JS的OOP,在学习阶段好像也用不到,总觉得JS的OOP不伦不类的,可能是因为先接触了Java,所以对JS的OO部分有些抵触. 偏见归偏见,既然面试官问到了JS的OOP,那么说明这东西肯定是有用的,应该抛开偏见,认真地了解一下 约定 P.S.下面将展开一个有点长的故事,所以有必要提前约定共同语言: 1 2 3 4 5…
js创建对象的多种方式 1. 工厂模式 function createPerson(name) { var o = new Object() 0.name = name return o } var person1 = createPerson('xwk') 缺点:创造出来的对象无法识别,因为都指向同一个原型. 2. 构造函数模式 function Person(name) { this.name = name this.getName = function() { console.log(th…
1.js创建关键字 //使用 New 关键字 function person(name,age){ this.name=name; this.age=age; } $(function(){ var LL=new Person("lily",25); alert("name:"+LL.name+" age:"+LL.age); }) 2.js创建对象 //使用字面量 $(function(){ var LL={claz:{zo:{student:…
几种范数的解释 l0-Norm, l1-Norm, l2-Norm, - , l-infinity Norm from Rorasa's blog l0-Norm, l1-Norm, l2-Norm, - , l-infinity Norm 13/05/2012rorasa I'm working on things related to norm a lot lately and it is time to talk about it. In this post we are going to…
MyEclipse取消验证Js的两种方法 作者: 字体:[增加 减小] 类型:转载 通过js写一个web工程的相关页面时感觉很卡,修改内存也不行下面有两种解决方法,大家可以尝试下 前言:有时我们通过js写一个web工程的相关页面时感觉很卡,修改内存也不行下面有俩种解决方法: 1. 选中当前工程—properties—MyEclipse—validation—Excluded Resource下找到须要作废验证的文件或者文件夹就可以了. 2. 找到在项目路径下面的.project文件中配置了一些验…
转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域. 下表给出了相对http://store.company.com/dir/page.html同源检测的结果: 要解决跨域的问题,我们可以使用以下几种方法: 一.通过jsonp跨域 在js中,我们直接用XMLHt…
1.JS中的定时器有两种: window.setTimeout([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法[function],当方法执行完成定时器停止(但是定时器还在,只不过没用了);window.setInterval([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法[function],当方法执行完成,定时器并…
JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECMAScript() DOM(文档对象模型document) BOM(浏览器对 象模型) ECMAScript:语法 变量和数据类型 运算符 逻辑控制语句 关键 字.保留字 对象 4.基本结构:<script type="text/javascript"> 语句 </scr…
JS中几种常见的数组算法 1.将稀疏数组变成不稀疏数组 /** * 稀疏数组 变为 不稀疏数组 * @params array arr 稀疏数组 * @return array 不稀疏的数组 */ function noSparse(arr) { var resArr = []; //创建空数组 for (var i = 0; i < arr.length; i ++) { if (arr[i] !== undefined) { resArr.push(arr[i]) } } return re…
HTML5+CSS: HTML中应用CSS的三种方法 一.内联 内联样式通过style属性直接套进HTML中去. 示例代码 <pstylepstyle="color:red">text</p> 这将会是指定的段落变成红色.我们的建议是,HTML应该是独立的.样式自由的文档,所以内联样式无论在什么情况下都应该尽量避免. 二.内部 内部样式服务于整个当前页面.在头标签head里面,样式标签style里包含当前页面的所有样式. 示例代码 <!DOCTYPEhtm…
js加载时间线 : 它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来. 1.创建Document对象,开始解析web页面.解析HTML元素和他们的文本内容后添加Element对象和Text节点到文档中.这个阶段document.readyState = 'loading'.(生成document对象,document状态位变为loading) 2.遇到link外部css,创建线程加载,并继续解析文档. 3.遇到script外…
众所周知,js有7种数据类型 1.  null 2. undefined 3. boolean 4. number 5. string 6. 引用类型(object.array.function) 7. symbol 判断类型有以下4种判读方法 第一种方式:   typeof typeof null   ---> "object" typeof undefined  ---> "undefined" typeof true | false  --->…
JavaScript的引入方式 直接编写 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!-- ------------页面内容--------------- --!> <script> aler…
js中6种错误 http://javascript.ruanyifeng.com/grammar/error.html#toc5 https://www.jianshu.com/p/467b9a145dcc try cache try { console.log(x); }catch (e) { console.dir(e); } console.log('还可以执行') try { console.log(x); }catch (e) { console.dir(e); throw new E…
Jquery动态加载js的三种方法如下: 第一种: $.getscript("test.js"); 例如: <script type="text/javascript"> $(function() { $('#loadButton').click(function(){ $.getScript('new.js',function(){ newFun('"Checking new script"'); }); }); }); </…
js中三种定义变量的方式const, var, let的区别 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 console.log('函数外const定义b:' + b);//有输出值 4 // b = 5; 5 // console.log('函数外修改const定义b:' + b);//无法输出 2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错. 1 var a =…
Javascript创建对象几种方法解析 Javascript面向对象编程一直是面试中的重点,将自己的理解整理如下,主要参考<Javascript高级程序设计 第三版>,欢迎批评指正. 通过字面量形式,创建对象: var person_1 = { name: "userName", age: 20 } 工厂模式创建对象 通过一个构造函数接收参数的方式构造对象,可无数次调用这个函数,通过改变参数构造不同的对象 function createPerson(name,age){…
08.17自我总结 关于js 一.原生js获得八种方式 通过ID获取(getElementById) 通过name属性(getElementsByName) 通过标签名(getElementsByTagName) 通过类名(getElementsByClassName) 通过选择器获取一个元素(querySelector) 通过选择器获取一组元素(querySelectorAll) 获取html的方法(document.documentElement) document.documentElem…
JS中有两种自加法操作.它们的运算符是++,它们的函数是向1添加运算符. 我和我的区别在于操作的顺序和组合的方向. 其中:++var被称为预自动添加,变量执行自动添加操作后.它的操作是先执行自动加法操作,然后引用var的值.var++被称为post auto-addition.var++前面的变量执行自动添加操作.var++的操作是先引用var的值,然后再自动添加操作. 如果自添加语句独立成为单独的语句,则自添加前后的语句完全相同.例如,单线A++:和+A:是相同的.另一个例子是常见的for循环…