zoukankan      html  css  js  c++  java
  • JavaScript要点

    JavaScript要点

    命名变量

    变量名需要遵守两条简单的规则:

    • 第一个字符必须是字母、下划线(_)或美元符号($)
    • 余下的字符可以是下划线、美元符号或任何字母或数字字符

    下面的变量都是合法的:

    var test;
    var $test;
    var $1;
    var _$te$t2;

    注:与C++相比,多了美元符号$这个东西可用,所以$不是像shell中是一种对变量的引用。

    Object 对象

    Object 对象自身用处不大,不过在了解其他类之前,还是应该了解它。因为 ECMAScript 中的 Object 对象与 Java 中的 java.lang.Object 相似,ECMAScript 中的所有对象都由这个对象继承而来,Object 对象中的所有属性和方法都会出现在其他对象中,所以理解了 Object 对象,就可以更好地理解其他对象。

    Object 对象具有下列属性:

    constructor
    对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。
    Prototype
    对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。

    Object 对象还具有几个方法:

    hasOwnProperty(property)
    判断对象是否有某个特定的属性。必须用字符串指定该属性。(例如,o.hasOwnProperty("name"))
    IsPrototypeOf(object)
    判断该对象是否为另一个对象的原型。
    PropertyIsEnumerable
    判断给定的属性是否可以用 for...in 语句进行枚举。
    ToString()
    返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的值。
    ValueOf()
    返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同。

    arguments 对象

    在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

    例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。

    因此,无需明确命名参数,就可以重写函数:

    function sayHi() {
      if (arguments[0] == "bye") {
        return;
      }
    
      alert(arguments[0]);
    }

    模拟函数重载

    用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:

    function doAdd() {
      if(arguments.length == 1) {
        alert(arguments[0] + 5);
      } else if(arguments.length == 2) {
        alert(arguments[0] + arguments[1]);
      }
    }
    
    doAdd(10);	//输出 "15"
    doAdd(40, 20);	//输出 "60"
    

    当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。

    请看下面这个例子:

    function doAdd(iNum) {
      alert(iNum + 20);
    }
    
    function doAdd(iNum) {
      alert(iNum + 10);
    }
    
    doAdd(10);	//输出 "20"
    

    如你所知,第二个函数重载了第一个函数,使 doAdd(10) 输出了 "20",而不是 "30"。

    如果以下面的形式重写该代码块,这个概念就清楚了:

    var doAdd = new Function("iNum", "alert(iNum + 20)");
    var doAdd = new Function("iNum", "alert(iNum + 10)");
    doAdd(10);

    用 Function 类直接创建函数的语法如下:

    var function_name = new function(arg1, arg2, ..., argN, function_body)

    在上面的形式中,每个 arg 都是一个参数,最后一个参数是函数主体(要执行的代码)。这些参数必须是字符串。

    记得下面这个函数吗?

    function sayHi(sName, sMessage) {
      alert("Hello " + sName + sMessage);
    }
    

    还可以这样定义它:

    var sayHi 
    = 
    new Function("sName", "sMessage", "alert(\"Hello \" + sName + sMessage);");
  • 相关阅读:
    CSS3 页面跳转的动画效果
    JS/React 判断对象是否为空对象
    React 根据官方总结的规范
    ckeditor字数限制
    swfobject.js IE兼容问题
    Jcrop 做图片剪裁 在IE中无法显示问题解决办法
    WebApp 中用 hashchange 做路由解析
    全国省市区Json文件 ,做省市区联动很轻松
    解决用友U8删除用户时提示“用户已启用”不能删除的问题
    CFUpdate高速模式下出现Error #2038提示的解决方案
  • 原文地址:https://www.cnblogs.com/tekkaman/p/2604533.html
Copyright © 2011-2022 走看看