zoukankan      html  css  js  c++  java
  • js 攻坚克难

    new

    new : 官方解释: 如果在一个函数前面带上new来调用,那么背地里将会创建一个连接到该函数的prototype的成员的新对象,同时this会被绑定到哪个新对象上;

    new 是用来创建对象的;
    当在自定义的function类型前使用new时,只有当函数无返回时才有区别;

    当无返回值时:使用new可以获得对象,不使用new就是执行一个普通的函数;
    当有返回值时:使用new与否结果都是一样的。

    prototype 与 __proto__

    只有类型才有prototype;  比如 Object ,Function,Boolean以及自定义的function
    对象才会有__proto__;并且对象的__proto__执行类型的prototype;
    Math有__proto__但是没有prototype,因为它是对象,但不是类型。
      var Quo = function (str){
      		this.status = str;
      	}
      //只有类型才能访问到prototype
      Quo.prototype.getStatus = function (){ 
      		return this.status;
      	};
      	var myQuo2 = new Quo("c222");
      	var myQuo = new Quo("confused");
      //对象的__proto__执行类型的prototype
      	myQuo.__proto__.gstatus = function (){
          alert(2222);
        }
      	alert(myQuo.getStatus());
      myQuo.gstatus();
      //原型被人改变了
      myQuo2.gstatus();


    模块模式 与原型链模式

    原型链模式是将方法添加到原型上面,模块模式是使用闭包将模拟class的格式;

      /*模块模式*/
      var obj  = function (){
        this.name = "wch";
        function getName(){return name;};
        function setName(n){name = n;};
    		return {getName:getName,setName:setName}
      };
      
      
      /*原型链模式*/
      var Quo = function (str){
      		this.status = str;
      	}
      Quo.prototype.getStatus = function (){ 
      		return this.status;
      	};	
      	var myQuo = new Quo("confused");
      	alert(myQuo.getStatus());


  • 相关阅读:
    图像的加载与保存
    numpy初学
    深入精通JavaScript插件
    Python图像处理库:Pillow 初级教程
    PIL包的应用
    UIWebView的离线缓存
    UITableView优化技巧
    UIKit Dynamics入门
    CALayer 一些重要属性
    一个Demo展示Storyboard的强大
  • 原文地址:https://www.cnblogs.com/vvch/p/4027567.html
Copyright © 2011-2022 走看看