JavaScript学习笔记

来源:互联网 发布:淘宝为什么被限制登录 编辑:程序博客网 时间:2024/04/28 19:33

对象

创建对象几种方式

//字面量var customer = {};//构造函数var obj = new Object();

构造函数

构造函数和一般函数并没什么大的区别。一般函数名大写,对象自身属性用this.attr表示。也可以通过原型动态添加属性。

function Person(name, age){    this.name = name;    this.age = age;}//通过原型添加属性Person.prototype.address = 'hz';Person.prototype.work = function (someting){    //dosometing};Person.prototype.car = {};

函数

函数也是一种对象,可以用Function构造函数直接创建:

var func = new Function('arg1', 'arg2', 'return arg1 + arg2');
  • 在Function中除了最后一个是函数体外,其他都是传入的参数。

  • 函数有自己的属性length,表示参数的个数。

  • 函数里内置变量arguments表示传入的参数,类似数组。但这个对象还有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。

  • 函数里内置this表示当前上下文。

函数声明和表达式

//以下是声明。可以在声明前提前调用函数。function add(){}//以下是表达式。只用在表达式定义后才能调用函数var add = function(){    //...}

函数名作为值

既然函数是一种对象,那么函数名其实就是一个对象的引用,它可以作为值进行传递和赋值。可以用来实现回调和闭包。

//回调funcfunction call(args, func){    return func(args);}//从一个函数返回另外一个函数function closure(args){    return function(args){        //...    };}

立即执行函数

一般形式:

(function (arg){     //...})(arg);

顾名思义,立即执行函数就是定义后马上执行的函数。在立即执行的函数里面是独立的命名空间,可以隔离全局命名空间,避免污染全局命名空间。

闭包

闭包是指可以访问其它函数(一般指外部函数)作用域的函数。

作用域

JavaScript没有私有成员的说法,任何成员都是共有的。不过函数中的变量被认为是私有的,函数外部无法访问。

没有块级作用域

Javascript不像C和Java里面有块级作用域。

    for(var i = 0; i < 10; i++){    }//i有可能污染全局命名空间。    // i没有被销毁,仍旧有效    var i;//即使重新声明后,仍旧视而不见    console.log(i); //这里仍旧输出10

设置私有作用域

用立即执行函数设置私有作用域;
从而限定

(function privateScope(){    var i = 10;})();//i已经被销毁了console.log(i);//这里访问会报错:i is not defined
1 0
原创粉丝点击