JS纵深学习记录

1、深刻理解JS scope概念=>当前上下文环境:堆栈

active object

global object

  JS加载文件后,从上到下顺序编译文件,并将变量声明、函数声明依次压入global object 堆栈,当调用函数或类方法,创建Acitve object,并将函数或类方法中定义的变量、函数压入Active object中,以此类推。当函数引用一个变量会首先查找Active Object 如果未查到依次向堆栈的上一级查询直到Global Object。闭包函数引用定义函数的私有变量,便是创建闭包函数的函数在执行后,因闭包函数的引用而无法销毁内存。

2、逻辑运算符  &&与||的功能

&&或||返回的是左右表达式的值而不是true(1) or false(0)

var  c = 1+2 && 1-1=>  若果&&左侧表达式计算结果为真,则直接返回&&右侧表达式的计算结果

=》网站开发常用该表达式进行  左侧表达式变量的赋值,右侧表达式计算

var x;

x=4 && y=x+6;

var  c = 1+2 ||1-1=>  若果||左侧表达式计算结果为假,则直接返回||右侧表达式的计算结果

var  c = 1+2 && 1-1 =>  若果&&左侧表达式计算结果为真,则直接返回&&右侧表达式的计算结果

3、apply \call 方法调用改变this指向,传参方式不同

function test(){}

var myObj = {};

myObj.method = function(){};

test.call(null,2,3,4); =>定义test为全局函数,此处省略了this,补全为this.test.call(null,2,3,4),将test方法绑定到null对象上,传参2,3,4给test函数

myObj.method.apply('',[2,3,4]); =>将对象method方法绑定到""上,传数组给方法。

4、立即执行函数  (函数定义)(实参);或者((函数定义)(实参));

立即执行函数的作用是在函数定义的时候立刻执行,而不是等到外部函数被调用的时候才执行,立即执行函数可映射的变量的实际值而非变量本身。

	function test()
	{
		var arr = [];

		for(var i=0;i<10;i++)
		{
			arr[i] = function(){
				console.log(i);
			};
		}
		return arr;
	}
	var c = test();
	for(var j=0;j<10;j++)
	{
		c[j]();
	}
	//输出10个10
函数闭包函数映射的i为外部函数test的私有变量,在执行c[]()时,会从作用域链中取变量i的值,i在执行完for循环后,值为10;

为达到输出0-9需要在闭包函数声明的时候,立即计算出i值

	function test()
	{
		var arr = [];

		for(var i=0;i<10;i++)
		{
			((arr[i] = function(j){
				console.log(j);
			})(i));
			
		}
		return arr;
	}
	var c = test();
	for(var j=0;j<10;j++)
	{
		c[j]();
	}
5、构造函数的原型继承(公有原型)=>中间层构造函数,即映射一个构造函数B的原型为A构造函数的原型则A的构造函数原型属性、方法的改变不影响B的原型。

圣杯模式

		function inherit(Target,Origin)
		{
			function F(){};
			F.prototype = Origin.prototype;
			Target.prototype = new F();
			Target.prototype.constructer = Target;
			Target.prototype.uber = Origin.prototype;
		}

		var inherit = (function(){
			var F = function(){};

			return function(Target,Origin)
			{
				F.prototype = Origin.prototype;
				Target.prototype = new F();
				Target.prototype.constructer = Target;
				Target.prototype = Origin.prototype;
			}
		}());


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值