典型例子

1.变量声明作用域

(function(){
    var a = b = 5;
})();
alert(b); //5

b默认是全局变量,没有显示的用window.b 引用,如果采用严格模式 ‘use strict‘

(function(){
    ‘use strict‘
   var a = window.b = 5;
})();

注意这里:alert(a); // error 因为a是函数局部变量 访问不到。

2. 原型的理解

对String 原型增加一个函数,使用方式:str.repeatity(2); // strstr;

if(typeof String.prototype.repeatify != "function")
    {
        String.prototype.repeatify = function(times){
            var str="";
            for(var i=0;i<3;i++){
                str += this;
            }
            return str;
        }
    }

或者

String.prototype.repeatify = String.prototype.repeatify || function(times){
            var str="";
            for(var i=0;i<3;i++){
                str += this;
            }
            return str;
        

先判断原型中是否存在repeatity 函数,防止每次都重新设置函数

注意this 是指当前调用的string对象。

3. 变量声明问题

(function test(){
    // alert(a);   //undefined
    // alert(foo()); //2

    var a = 1;
    function foo(){
        return 2;
    }
})();

第一个alert 时是undefind 因为a已经存在函数内,被声明但是没有被初始化,相当于

(function test(){
    var a;
    function foo(){
        return 2;
    };
    alert(a); //undefinde
    a = 1;
})();

4. 作用域问题

var name = "Jack";
var obj = {
    name : "Obj_Jack",
    prop:{
        name:‘prop_Jack‘,
        getName : function(){
            return this.name;
        }
    }
}
// alert(obj.prop.getName()); //prop_Jack
var t = obj.prop.getName; //t是全局函数
// alert(t()); //Jack
// alert(t.call(obj)); // Obj_Jack (重新设置作用域)

第一个alert obj引用属性prop,然后prop引用在调用getName 方法 此时的作用域在prop引用内。

第二个alert 变量t是全局变量,引用指向函数getName,此时的作用域是全局的。

第三个alert t全局调用call 方法第一个参数是设置作用域,此时的作用域改为obj引用内。

时间: 2024-10-13 16:47:19

典型例子的相关文章

C++多态性的一个典型例子(转)

本文摘录自C++多态性的一个典型例子. 例题:先建立一个Point(点)类,包含数据成员x,y(坐标点).以它为基类,派生出一个Circle(圆)类,增加数据成员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高).要求编写程序,重载运算符“<<”和“>>”,使之能用于输出以上类对象. 这个例题难度不大,但程序很长.对于一个比较大的程序,应当分成若干步骤进行.先声明基类,再声明派生类,逐级进行,分步调试. 1. 声明基类Point

HTML知识点总结以及典型例子讲解

一.HTML文本格式化标签(这些标签都不换行) eg: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head>

Hibernate的四种典型例子(增删改查)

Hibernate的四种典型例子(增删改查)  //查询  // Session session=HibernateSessionFactory.getSession();  // session.beginTransaction();  // Query q=session.createQuery("from Info where id=:id");  // q.setInteger("id", 1);  // List l=q.list();  // Info

内存泄漏典型例子

Vector v = new Vector( 10 ); for ( int i = 1 ;i < 100 ; i ++ ){ Object o = new Object(); v.add(o); o = null ; }在这个例子中,代码栈中存在Vector 对象的引用 v 和 Object 对象的引用 o .在 For 循环中,我们不断的生成新的对象,然后将其添加到 Vector 对象中,之后将 o 引用置空.问题是当 o 引用被置空后,如果发生 GC ,我们创建的 Object 对象是否能

Graphviz典型例子

例子1 //先来看一个例子,我们创建一个文档graph1.dot: //digraph是有向图,graph是无向图,要注意,->用在有向图中,--用在无向图中表示一条边,不能混用. //第一行给出了图的类型和名字 digraph graph1{ main -> parse -> execute; main -> init; main -> cleanup; execute -> make_string; execute -> printf; init ->

TreeSet典型例子两个 比较器?

package com.runoob.Collection; import java.util.Comparator; import java.util.Set; import java.util.TreeSet; /* * 联系:对多个字符串(不重复)按照长度排序(由短到长) * 思路: * 1.多个字符串,需要容器存储 * 2.选择哪个容器.字符串是对象,可以选择集合,而且不重复,选择set集合 * 3.还需要排序,可以选择TreeSet集合 */ public class TreeSetT

QPainter就是手里的作图工具,只需要三洋东西:笔(颜色,宽度,样式),字体(写字),刷子(大面积作画),这里有三个典型例子

设置笔和字体以后,就可以写字了: void MainWindow::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QPainter painter(this); // 设置画笔颜色 painter.setPen(QColor(0, 160, 230)); // 设置字体:微软雅黑.点大小50.斜体 QFont font; font.setFamily("Microsoft YaHei"); font.setPointSize(50)

WebDriver+TestNG的一个典型例子

想让测试更加灵活,1. 可以配置使用任意支持的浏览器进行测试:2. 配置所有Google的URL:3. 配置搜索的关键字.修改后的代码: public class GoogleTest { WebDriver driver; @Parameters({"browser"}) @BeforeTest public void setupBrowser(String browser){ if (browser.equals("firefox")){ driver = ne

Java“封装”的例子

/*功能:Java"封装"的典型例子*/ public class Demo3_5{    public static void main(String args[]){        Clerk clerk1=new Clerk("qingfeng",22,5321.12f);        System.out.println("名字为"+clerk1.name+"薪资为"+clerk1.getSalary());//只能