zoukankan      html  css  js  c++  java
  • 【javascript基础】

    1.call 方法

      调用格式:obj1.fun.call(obj2,参数1,参数2,参数3,...,参数n);  

           如果对象obj1是window,可省略;

           参数可选,在方法fun执行时传入;

      调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容)。
      call 方法是一种继承方式,叫抄写继承。

      简单的说,想让对象A执行对象B的方法,继承对象B的属性,就可以使用call 方法。

      举例说明:

      function obj(){ this.value="1"; } // obj是window对象的一个方法,所以 this 指向的对象是window;window.value = 1;

      var value="2"; // 这里的value变量是在window环境下定义的,它是对象window的一个属性;window.value = 2;

      function fun1(){

        alert(this.value);

        this.name="123"

      }

      var that={

          value:3 // that对象中的this指向是 that 对象。 

      }

      window.fun1();
      // 执行window对象下的fun1方法,this指向window,所以现在this.value = window.value = 2; 
      fun1.call(window);
      // 把window对象的fun1方法放到window对象本身上执行,此时的this 还是指向window对象本身,所以this.value = window.value = 2; 
      fun1.call(that); 
      // 把window对象的fun1方法放到that对象上执行,但此时this,已经从指向window,变为指向that,所以this.value = that.value = 3;
      var a = new obj();
      // 以obj构造函数,定义了一个对象a;a对象只有一个value属性;a.value = 1; 
      fun1.call(a); 
      // 把window对象的fun1方法放到a对象上执行,此时 this指向a对象,this.value = 1; this.name = a.name = "123",
        
        a= {
          "value":1,
          "name":"123",
        }
      还有一个apply,跟call基本上是一个意思,区别在call 方法第二个参数可以是任意类型,而apply的第二个参数必须是数组;
      obj1.fun.apply(obj2,[参数1,参数2,参数3,...,参数n]);  

    2.For...In 声明

      For...In 声明用于对数组或者对象的属性进行循环操作,可以用作复制对象,或者整合两个对象的属性或方法。
      举例说明:
      var obj1 ={
          "name":"li",
          "old":28,
          "city":"beijing"
      }
      var obj2 = {
          "name":"wang",
          "old":30,
          "height":180
      }
      var key,obj3;
      for(key in obj2){ //变量key 遍历了对象obj2的所有的属性
          obj1[key] = obj2[key];//如果对象obj1中存在obj2相同的属性,属性值将被替换,没有则在obj1 中添加新的属性及属性值;
      }
      此时 obj1 ={
        "name":"wang",
        "old":30,
        "city":"beijing"
        "height":180
      }
      for(key in obj2){
          obj3[key] = obj2[key];// 因为obj3 原来是空对象,所以执行for..in 后,等同于将obj2完全复制给obj3;
      }
      obj3 = { 
          "name":"wang",
          "old":30,
          "height":180
      }
    3. slice(); substr();substring(); 的使用方法
     String 对象的方法 slice()、substring() 和 substr() (ECMAscript 没有对该方法进行标准化,不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
    substr():

    stringObject.substr(start,length) 
      一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 lenght 个字符
      var str ="hello my world! ";
      str.substr(2,2); // 从第2个字符"e"开始,截取到之后的2个字符,就是 "ll";
    substring():

    stringObject.substring(start,end)
    substring() 方法用于提取字符串中介于两个指定下标之间的字符。
    var str ="hello my world! ";
    str.substr(2,5); // 从第2个字符"e"开始,截取到第5个字符"o",就是 "hello";
    slice():

    stringObject.slice(start,end)
    slice() 跟substring()方法相似,且更灵活一些 因为它允许使用负数作为参数,所以使用它截取字符,是最佳之选.
    var str ="hello my world!";
    str.slice(2,-2); //    从第2个字符"e"开始,截取到倒数第2个字符"l",就是 “llo my worl
  • 相关阅读:
    SpatiePermissionPermissionServiceProvider' not found
    ThinkPad L14G 连接外接显示屏无响应问题解决
    HBase 初学习之数据模型
    python 实现 kakfa 的 生产消费模式 和 发布订阅模式
    数据结构中树的基本概念
    MySQL行级锁、表级锁、页级锁详细介绍
    设置div只显示2行
    linux 关闭防护墙,永久关闭
    yum install nginx 时报错:No package nginx available.
    win10 查询端口,杀掉端口进程
  • 原文地址:https://www.cnblogs.com/fengfan/p/2133804.html
Copyright © 2011-2022 走看看