js

js中点与方括号及for...in

╄→尐↘猪︶ㄣ 提交于 2020-03-28 07:10:41
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。 当用中括号代替点时,属性名需加双引号。 中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。 中括号运算符可以用纯数字为属性名。点运算符不能。 中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。 你就记住:属性就用点,变量就用括号 var person = new Object(); person.name = "Nike"; var thisname = "name"; console.log(person.name); //打印Nike console.log(person["name"]); //打印Nike console.log(person[thisname]); //打印Nike console.log(thisname); //打印name window.onload=function() { // var oDiv=document.getElementsByTagName('div')[0]; // oDiv.onclick=function() // { // setStyle(oDiv,{ // width:'400px', // height:'400px', // background:'red' // }); // }; // function

js中级小知识2

落爺英雄遲暮 提交于 2020-03-28 06:50:21
1.面向对象 js一开始就是写网页特效,面向过程的,作者发现这样写不好,代码重复利用率太高,计算机内存消耗太大,网页性能很差。所以作者就收到java和c的影响,往 面向对象 靠齐。js天生有一个Object,但他没有面向对象的特征(封装,继承,多态)。最后研究出了构造函数。 构造函数最终目的是生成对象。 我们把封装的那个函数叫 类 类里面的属性是私有的。 类原型上的属性是公有的,可继承的。 1.类身上天生自带一个prototype的属性,属性是对象 2.prototype对象天生有一个constructor属性,属性值就是类本身 3.实例天生有一个__proto__指向你自己类的原型 原型链主要针对对象的属性来说 作用域链主要针对变量来说的 var和a的区别 没有带var的变量就不能存放到内存地址中。就没有变量提升这种说法了。相当于给window加了一个属性window.a。 带var可以存放在内存地址中,有变量提升,同时也行当于给window加了一个属性window.a 来源: https://www.cnblogs.com/guhuai/p/9910901.html

js函数

允我心安 提交于 2020-03-28 06:25:27
函数: 函数在调用的时候,会形成一个私有作用域,内部的变量不会被外面访问,这种保护机制叫闭包。这就意味着函数调用完毕,这个函数形成的栈内存会被销毁。 但有时候我们不希望他被销毁。 函数归属谁跟它在哪调用没有关系,跟在哪定义有关。 Fn() 调用完毕后得到的是一个匿名函数,但是这个函数在 fn 这个作用域下定义的,所以这个匿名函数内部的变量在 fn 作用域下查找。这种写法可以使函数内部的变量不被销毁。 function fun(n,o) { console.log(o) return { fun:function(m){ // 1,0 return fun(m,n); } }; } //var a = fun(0); //{fun:function(m){return fun(m,n)}} //a.fun(1); // fun(1,0) //0 //a.fun(2); //fun(2,0) //a.fun(3);//undefined,?,?,? fun(3,0) //var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,? var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,? 基类 Object 的子类有 Function Array Number Boolean

js笔记10

随声附和 提交于 2020-03-28 06:12:43
1.闭包    封装:减少代码的冗余,提高代码的重复利用率   继承:本来需要开辟多个空间,只需要开辟一个空间,减少内存的消耗,提高性能   函数归属:函数归属谁,跟他在哪调用没有关系,而跟他在哪定义有关   闭包的定义:函数在调用的时候,会形成一个私有作用域,内部的变量不能被外部访问,这种保护机制叫闭包(这就意味着函数调用完毕,这个函数形成的栈内存就会被销毁)   栈内存被销毁的案例:    function fn(){     var a=12;     a++;      console.log(a)   }   fn() //13   fn() //13   fn() //13 (因内部存在一个变量,所以在函数内部栈内存就会被销毁)       但有时候,我们不希望他被销毁 ,所以需要return   案例:    function fn(){     var a=12     return function(){       a++;       console.log(a)     }   }   var ss=fn()   ss()  //13   ss()  //14   ss()  //15    解析:       fn()调用完毕后得到的是一个匿名函数,但这个匿名函数在fn()这个作用域下定义的,所以匿名函数内部的变量在fn()作用域下查找

云笔记项目-补充JS面向对象编程基础知识

☆樱花仙子☆ 提交于 2020-03-28 06:06:58
简单介绍: 此部分知识为在做云笔记项目中补充,因为云笔记项目中涉及到前端js,里面写了很多js脚本,用到了创建js属性和方法,在js中直接声明的属性和方法最终都会变成window的对象,即其成为了全局变量,可以在控制台直接调用。 (1)如何创建js对象 1 JSON语法声明对象(直接量声明语法)-->var obj={} 2 使用Object创建对象 -->var obj=new Object() (2) js对象可以后期添加属性 1 var obj={}; obj.name="tom"; 这样可以使用obj.name访问其属性 2 var obj1=new Object(); obj1.name="tom"; 这样也可以访问obj.name、 (3)js对象特点: 1.new Object()和JSON语法创建的对象没有差别,JSON语法简洁方便,更加容易使用。 2.对象可以随时添加属性,对象.属性=值 3.不存在的属性,值是undefined,undefined 相当如false,利用这点可以检查属性是否存在,if(!obj.age){ console.log("没有age属性"); }或者if(obj.age){console.log("年龄"+obj.age);} 4.可以随时删除对象的属性 delete 对象.属性,如 delete obj.age;

JS对象!

徘徊边缘 提交于 2020-03-28 06:00:25
java script 对象 1.创建方式   1)通过字面量的形式创建       var = stt{x:1,y:2,y:3};       var = stt{ x:1,              y:2,             'for':3                } PS:关键字必须放到引号中间    2)通过new创建对象       var = new stt();         stt.name = '小鱼';         stt.age = 20;    3)通过构造函数创建对象        function test(name,age,sex){                     this.name = name;                  this.age = age;                  this.sex = sex;    }          var stt = test(stt,20,nan);     4)通过 2.获取属性的方法    1)对象名.属性名 获取       alert(stt.name);     2)对象名['属性名'] 获取       alert(stt['name']);       PS:当[ ]内没有引号时 不局限于对象内部找该属性 而是整个程序找到改属性名。 3.添加属性

js面向对象

天大地大妈咪最大 提交于 2020-03-28 06:00:08
                             JS——面向对象 1.面向对象:  js一开始就是写网页特效 面向过程的,作者发现这样写不好,代码重复利用率太高,计算机内存消耗太大,网页性能很差。所以作者就受到Java和c语言的影响,往 面向对象 靠齐。js天生有一个object,但他没有面向对象的特征(封装 继承 多态)。最后研究出了 构造函数。 构造函数的最终目的是生成对象。 我们把封装的那个函数叫类 类里面的属性是私有的。 类原型上的属性是公有的,可继承的。 (1)类身上自带一个prototype的属性,属性值是对象。 (2)prototype对象天生有一个constructor属性,属性值是类本身。 (3)实例天生有一个--proto--指向自己类的原型。    原型链主要针对 对象的属性 来说; 作用域链主要是针对 变量 来说的。 2.var a和a的区别: 没有带var的变量就不能存放到内存地址中 , 就没有变量提升这种说法了。相当于给window加了一个属性window.a。 带var 可以存放在内存地址中,有变量提升,同时也相当于给window加了一个属性window.a 来源: https://www.cnblogs.com/yuanjingjing/p/9896339.html

js中级1.0

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-28 05:59:57
面向对象 Js一开始就是写网页特效,面向过程的,作者发现这样写不好,代码重复利用率太高,计算机内存消耗太大,网页性能很差。所以作者就收到java和c的影响,往面向对象靠齐。Js天生有一个Object,但他没有面向对象的特征(封装,继承,多态)。最后研究出了构造函数。 构造函数最终目的是生成对象。 我们把封装的那个函数叫 类 类里面的属性是私有的。 类原型上的属性是公有的,可继承的。 类身上天生自带一个prototype的属性,属性是对象 Prototype对象天生有一个constructor属性,属性值就是类本身 实例天生有一个__proto__ 指向你自己类的原型 原型链主要针对对象的属性来说的 作用域链主要针对变量来说的 var a和a的区别 没有带var的变量就不能存放到内存地址中。就没有变量提升这种说法了。相当于给window加了一个属性window.a。 带var 可以存放在内存地址中,有变量提升,同时也相当于给window加了一个属性window.a Beike 来源: https://www.cnblogs.com/jiaxinchao/p/9896748.html

js深拷贝与浅拷贝

左心房为你撑大大i 提交于 2020-03-28 05:54:09
实现一个页面或者一个功能时,常常遇到的场景需要我们备份一个数组或者对象,这时候出现了深拷贝与浅拷贝效果截然不同呀总结如下: 浅拷贝: 1 var 2 arr = [1, 2, 3, 4], 3 shallowArr = a; 4 arr[0] = "change"; 5 console.log(arr); 6 console.log(shallowArr); 很简单的例子,很明显结果是两个数组第一项同时发生改变,原因是因为arr与shallowArr两数组为同一数组,仅仅是地址名不同,而地址却是同一个。那么如何避免上面的情况发生呢那就是深拷贝了。 深拷贝: 1 var 2 arr = [1, 2, 3, 4], 3 deepArr = [].concat(arr); 4 console.log(arr === shallowArr); // false 上述代码这是针对数组内部为简单类型的深拷贝,当数组内部的成员为引用类型时上面的方式还能算深拷贝吗? 1 var 2 arr = [{ m: 1 }, { n: 2 }], 3 deepArr = [].concat(arr); 4 console.log(arr === deepArr); // false5 console.log(arr[0] === deepArr[0]); //true 很明显数组地址发生变化

JS—二维数组的创建

梦想与她 提交于 2020-03-28 05:53:14
//二维数组的创建 //方法一: var myarr = new Array(); //先声明一维 for ( var i = 0; i < 2; i++) { //一维长度为2 myarr[i] = new Array(); //再声明二维 for ( var j = 0; j < 3; j++) { //二维长度为3 myarr[i][j] = i + j; // 赋值,每个数组元素的值为i+j } } //方法二: var myarr1 = [ [ 0, 1, 2 ], [ 1, 2, 3 ] ]; myarr1[0][1] = 5; //将5的值传入到数组中,覆盖原有值。 //alert(myarr1[0][1]); 来源: https://www.cnblogs.com/feile/p/5450712.html