学习笔记

来源:互联网 发布:linux调整日志级别 编辑:程序博客网 时间:2024/06/03 14:10

之前没有很系统的学习javascript,在学习过程中收录了一些有用的资料,供以后查阅使用。不断补充。

1、  js的引用指向的只能使用具体的对象,而不是另外一个引用。对个变量能够指向同一个对象。

2、  函数重载和类型检查

Js的每个函数都带有一个仅在这个函数范围内作用的变量称为参数,它是一个包含所有传给函数的参数的伪数组,所以它并非真正意义的数组(也就是说你不能修改它,也不能用push()来添加新元素),但是可以访问其中的元素,它也有.length属性。

function sendMessage(msg,obj){

           if(arguments.length == 2)

              obj.handleMsg(msg);

           else

              alert(msg);         

       }

       //传一个参数,直接显示信息

       sendMessage("Hello world");

       //也可以将自定义的一个对象传入,用另外一套方法显示信息

       sendMessage("How are you?",{handleMsg : function(customMsg){

              alert("This is a custom massage:"+customMsg);

           }

       });

       //一个接受任意数量的参数并将其转化为数组的参数

       function makeArray(){

           var arr = [];

           for(var i=0;i<arguments.length;++i)

              arr.push(arguments[i]);

           return arr;

       }

 

还有一个用来判断传入参数类型的方法。如果没有提供参数,它的类型必为undefined。第一种方法是使用typeof操作符。

function displayError(msg){

           if(typeof(msg) == "undefined")

              alert("argument absent!");

           else if(typeof(msg) == "string")

              alert("type of argument is string");

       }

       displayError();

       displayError("aaaa");

使用typeof判断类型,当变量不是objectarray时,是最完美的解决方案了。但是,对于自定义对象,如usertypeof就只能返回object,很难与其他object区分开来。第二种检查类型的方法。需要引用所有js对象都带有的一个属性,称为构造函数constructor

if(num.constructor==String)

           num = parseInt(num);

       if(str.constructor==Array)

           str = str.join(",");

 

变量

typeof(变量)(都是字符串类型)

变量.constructor

{an:”object”}

object

Object

[“an”,”array”]

object

Array

function(){}

function

Function

“a string”

string

String

55

number

Number

true

boolean

Boolean

new User()

object

User

3、作用域(scope

1)在js里,作用域是由函数划分的,而不是由块划分的。

2)基于浏览器的js的一个有趣的特性是,所有属于全局作用域的变量其实都是window对象的属性。

3)另外,当变量缺乏声明时,它就是全局的,而不管它位于函数内或者块内。

 

原创粉丝点击