zoukankan      html  css  js  c++  java
  • 函数的四种调用模式

    在 js 中 无论是函数, 还是方法, 还是事件, 还是构造器, ... 其本质都是函数. 只是处在不同的位子而已.

    四种:

    1. 函数模式
    2. 方法模式
    3. 构造器模式
    4. 上下文模式

    函数模式

    特征: 就是一个简单的函数调用. 函数名的前面没有任何引导内容.

    	function foo () {}
    	var func = function () {};
    	...
    	
    	foo();
    	func();
    	(function (){})();
    

    this 的含义: 在 函数中 this 表示全局对象, 在浏览器中是 window

    方法模式

    特征: 方法一定是依附于一个对象, 将函数赋值给对象的一个属性, 那么就成为了方法.

    	function f() {
    		this.method = function () {};
    	}
    	var o = {
    		method: function () {} 
    	}
    

    this 的含义: 这个依附的对象.

    构造器调用模式

    创建对象的时候 构造函数做了什么?

    由于构造函数只是给 this 添加成员. 没有做其他事情. 而方法也可以完成这个操作, 就 this 而言,
    构造函数与方法没有本质区别.

    特征:

    1. 使用 new 关键字, 来引导构造函数.
    2. 构造函数中发 this 与方法中一样, 表示对象, 但是构造函数中的对象是刚刚创建出来的对象
    3. 构造函数中不需要 return, 就会默认的 return this

    补充:

    1. 如果手动的添加 return, 就相当于 return this
    2. 如果手动的添加 return 基本类型; 无效, 还是保留原来 返回 this
    3. 如果手动添加 return null; 或 return undefiend, 无效
    4. 如果手动添加 return 对象类型; 那么原来创建的 this 就会被丢掉, 返回的是 return 后面的对象

    创建对象的模式

    1. 工厂方法
    	// 工厂就是用来生产的, 因此如果函数创建对象并返回, 就称该函数为工厂函数
    	function createPerson( name, age, gender ) {
    		var o = {};
    		o.name = name;
    		o.age = age;
    		o.gender = gender;
    		return o;
    	}
    	
    	// document.createElement() 
    
    1. 构造方法
    2. 寄生式创建对象
    	// 外表看起来就是构造方法, 但是本质不是的构造方法创建对象的方式
    	function createPerson( name, age, gender ) {
    		var o = {};
    		o.name = name;
    		o.age = age;
    		o.gender = gender;
    		return o;
    	}
    	var p = new createPerson( 'jim', 19, 'male' );
    
  • 相关阅读:
    Django REST framework
    容器平台自动化CI/CD流水线实操
    VUE--webpack
    vue动态路由匹配
    VUE学习---vue基础与vue-router
    MYSQL-创建测试数据
    MYSQL-主键、外键
    MYSQL-数据库、表、数据操作
    MySQL-添加环境变量 及MySQL服务启停
    MYSQL-命令行
  • 原文地址:https://www.cnblogs.com/sunzhenbing/p/5751460.html
Copyright © 2011-2022 走看看