var函数

JS经典理解例子

空扰寡人 提交于 2020-02-08 15:13:05
1. var name = 'the window'; var obj = {   name:"my obj",   getNameFunc:function(){     return function(){       return this.name;     }   } }; alert(obj.getNameFunc()());//问输出结果是多少 答案:the window 理解:这里的obj.getNameFunc()返回了一个function,然后再再外面调用这个function,这时候调用function的是window对象,所有输出the window 2. var name = 'the window'; var obj = {   name:"my obj",   getNameFunc:function(){     var that = this;     return function(){       return that.name;     }   } }; alert(obj.getNameFunc()());//问输出结果是多少 答案:my obj 理解:返回的这个function是getNameFunc的一个内部函数,而他使用了外部函数定义的变量,所以产生了闭包,再调用执行return that.name;的时候

javascript 创建对象的几种方式

安稳与你 提交于 2020-02-08 04:16:52
1. //基于已有对象扩充其属性和方法var object = new Object(); object.name = "zhangsan"; object.sayName = function(name) { this.name = name; alert(this.name); } object.sayName("lisi"); 2. //工厂方式创建对象 function get() { alert(this.username + ", " + this.password); } //让一个函数对象被多个对象所共享,而不是每一个对象拥有一个函数 对象。 function createObject(username, password) { var object = new Object(); object.username = username; object.password = password; object.get = get; return object; } var object = createObject("zhangsan", "123"); var object2 = createObject("lisi", "456"); object.get(); object2.get(); 3. //构造函数方式 function Person() { /

javascript -- 第一篇 语法篇

大兔子大兔子 提交于 2020-02-08 03:48:44
1.javascript的操作符: *,/,%,+,- ,=;-------算术运算符,赋值符 ==,!=,<>; --------条件,比较及逻辑运算符 2.javascript的变量: JavaScript 使用关键字 var 来定义变量, 使用等号来为变量赋值 eg: var x = 6; 3. javascript的注释: //dhavadv 4.JavaScript 数据类型 JavaScript 有多种数据类型:数字,字符串,数组,对象等等: 5.JavaScript 函数 6.JavaScript 字母大小写 来源: CSDN 作者: flower in my heart 链接: https://blog.csdn.net/qq_42099097/article/details/104216198

JavaScript 创建类/对象的几种方式

泄露秘密 提交于 2020-02-08 03:36:00
在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。 JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表、字典、健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象。 一、由一对大括号括起来 var emptyObj = {}; var myObj = { ' id ' : 1 , // 属性名用引号括起来,属性间由逗号隔开 ' name ' : ' myName ' }; // var m = new myObj(); //不支持   不知你注意到对象都是用 var 声明的没有,像上面的代码,就只是简单的声明一个对象,它只有一份拷贝,你不能像实例化类对象一样对它采用new操作,像上面代码的注释部分。这样就极大的限制了对象的重用,除非你建立的对象只需要一份拷贝,否则考虑用其他方法建立对象。   下面一起看看如何访问对象的属性和方法。 var myObj = { ' id ' : 1 , ' fun ' : function () { document.writeln( this .id + ' - ' + this .name);

一道考察this指向和js运行原理细节的单例模式测试题

情到浓时终转凉″ 提交于 2020-02-08 00:53:55
原题: var n = 2 ; var obj = { n : 30 , fn : ( function ( n ) { n *= 2 ; this . n += 2 ; var n = 5 ; return function ( m ) { this . n *= 2 ; console . log ( m + ( ++ n ) ) ; } } ) ( n ) } ; var fn = obj . fn ; fn ( 3 ) ; obj . fn ( 3 ) ; console . log ( n , obj . n ) ; 带解析的代码js var n = 2 ; var obj = { n : 30 , fn : ( function ( n ) { n *= 2 ; this . n += 2 ; //this.n =>window.n=2 +=2=4 window.n=4 //console.log(this.n); var n = 5 ; //n在这重新定义赋值5 return function ( m ) { //console.log(m);//3 //console.log(n);//6 在16行被定义成5,因为下面有个++n所以+1 => 6 // console.log(this.n == window.n)//true this . n *= 2 ; /

javaScript-practice2019-0603

我的梦境 提交于 2020-02-07 06:44:09
1.搜索框示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>搜索框示例</title> </head> <body> <!--onfocus 元素获得焦点。 // 练习:输入框--> <!--onblur 元素失去焦点。 --> <input id="d1" type="text" value="请输入关键字" onblur="blur()" onfocus="focus()"> <script> function focus(){ var inputEle=document.getElementById("d1"); if (inputEle.value==="请输入关键字"){ inputEle.value=""; } } function blur(){ var inputEle=document.getElementById("d1"); var val=inputEle.value; if(!val.trim()){ //去掉元素两端的空格 inputEle.value="请输入关键字"; } } </script> </body> </html> View Code 2. 城市联动 1.定义data数据 2.通过ID获取标签 3.定义onchange()函数,先获取省名

js数组

一曲冷凌霜 提交于 2020-02-07 05:07:17
数组 数组是一个引用列表(顺序,只有值,紧密,速度慢) 数组的创建 var array=[]; //创建空数组 var array=new Array(); //构造函数创建法 var arr=Array(); //不是创建方法,只是把字符串转化为数组类型,速度慢点儿 var arr=new Object([]); //对象数组,不建议使用,反正也还没用过 构造函数创建 构造函数实例化对象 var arr=new Array(1,2,3,4,5); console.log(arr); 数组通过构造函数创建时,如果只有一个参数,并且参数是正整数,这个数就是数组的长度,而不作为数组的新元素; 如果是数字,但不是正整数,都会报错; 如果不是数字,则作为数组的第一个元素添加。 var arr=new Array(“3”); console.log(arr); //[“3”] var arr=new Array(9); console.log(arr); //(9) [empty × 9] 字符串转数组类型 var arr=Array(1,2,3,4,5,6); console.log(arr); var arr=Array(5); console.log(arr); //(5) [empty × 5] 数组的结构 字面量创建数组 var arr0 = [1,2,3,4,5];两个",

Js中的函数

ⅰ亾dé卋堺 提交于 2020-02-07 03:12:24
函数柯里化 柯里化概念:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数 看一个例子: var add = function(x) { return function(y) { return x + y; }; }; var increment = add(1); var addTen = add(10); increment(2); // 3 addTen(2); // 12 我们定义了一个 add 函数,它接受一个参数并返回一个新的函数。调用了 add 之后,返回的函数就通过闭包的方式记住了 add 的第一个参数。 因为一次性地调用它有点繁琐,所以使用一个特殊的 curry 帮助函数使得这类函数的定义和调用更加容易。 curry的封装 // 初步封装 var currying = function(fn) { // args 获取第一个方法内的全部参数 var args = Array.prototype.slice.call(arguments, 1) return function() { // 将后面方法里的全部参数和args进行合并 var newArgs = args.concat(Array.prototype.slice.call(arguments)) // 把合并后的参数通过apply作为fn的参数并执行 return fn.apply

JavaScript对象中的构造方法

倖福魔咒の 提交于 2020-02-07 01:36:24
JavaScript 类/对象可以具有构造函数吗? 它们是如何创建的? #1楼 这是一个构造函数: function MyClass() {} 当你做 var myObj = new MyClass(); 执行 MyClass ,并返回该类的新对象。 #2楼 我想我会发布有关javascript闭包的信息,因为目前还没有人使用闭包。 var user = function(id) { // private properties & methods goes here. var someValue; function doSomething(data) { someValue = data; }; // constructor goes here. if (!id) return null; // public properties & methods goes here. return { id: id, method: function(params) { doSomething(params); } }; }; 欢迎对此解决方案提出意见和建议。 :) #3楼 这是我有时在JavaScript中用于 OOP 相似行为的模板。 如您所见,您可以使用闭包来模拟私有(静态和实例)成员。 new MyClass() 将返回的对象是仅具有分配给 this 对象的属性,并且位于“类”的

JavaScript创建对象常见方式

只谈情不闲聊 提交于 2020-02-06 18:21:31
1.创建一个object的实例,再添加属性和方法    var person = new Object();     person .name = "zhangsan";     person.age = 20;     person.sayName = function(){       console.log(this.name);     } 2.字面量模式    var person = {       name:"zhangsan",       age:20,       sayName: function(){         console.log(this.name);       }     } 3.工厂模式(解决创建多个相似对象和大量代码重复问题)    function createPerson(name,age){       var o = new Object();       o.name = name;       o.age = age;       o.sayname = funtion(){         console.log(this.name)       }         return o;     }     var person1 = createPerson("zhangsan",20);     var person2 =