函数内的方法和prototype上的方法对比

  • 函数内的方法: 使用函数内的方法我们可以访问到函数内部的私有变量,如果我们通过构造函数new出来的对象需要我们操作构造函数内部的私有变量的话, 我们这个时候就要考虑使用函数内的方法。
  • prototype上的方法: 当我们需要通过一个函数创建大量的对象,并且这些对象还都有许多的方法的时候;这时我们就要考虑在函数的prototype上添加这些方法. 这种情况下我们代码的内存占用就比较小。
  • 在实际的应用中,这两种方法往往是结合使用的;所以我们要首先了解我们需要的是什么,然后再去选择如何使用。
时间: 2024-10-11 01:58:15

函数内的方法和prototype上的方法对比的相关文章

javascript当中静态方法和prototype用法

6)静态方法和prototype(难) 例 3.6.1 <head>    <meta http-equiv="content-type" content="text/html; charset=utf-8"/></head><script>    /*note that 马克-to-win: static variable's value has nothing to do with instance's varia

jQuery.extend()方法和jQuery.fn.extend()方法

jQuery.extend()方法和jQuery.fn.extend()方法源码分析 这两个方法用的是相同的代码,一个用于给jQuery对象或者普通对象合并属性和方法一个是针对jQuery对象的实例,对于基本用法举几个例子: html代码如下: <!doctype html> <html> <head> <title></title> <script src='jquery-1.7.1.js'></script> <

Servlet的Service方法和doget 和 dopost方法的区别,常见的错误解析

package com.sxt.in; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Service方法和doget 和 dopost方

函数的call()方法和apply()方法

阅读各种框架的源码apply和call方法肯定经常看到,好好理解一下概念至关重要. JavaScript中的函数也是对象,和其他JavaScript对象没什么两样,函数对象也可以包含方法.其中的call()方法和apply()方法可以间接调用函数.两个方法都允许显式指定调用所需的this值,也就是说,任何函数都可以作为任何对象的方法来调用,哪怕这个函数不是那个对象的方法. 两个方法都可以指定调用的实参.call()方法使用它自有的实参列表作为函数的实参,apply()方法则要求以数组的形式传入参

Effective JavaScript Item 34 在prototype上保存方法

本系列作为EffectiveJavaScript的读书笔记. 不使用prototype进行JavaScript的编码是完全可行的,例如: function User(name, passwordHash) { this.name = name; this.passwordHash = passwordHash; this.toString = function() { return "[User " + this.name + "]"; }; this.checkP

jQuery.extend()方法和jQuery.fn.extend()方法源码分析

这两个方法用的是相同的代码,一个用于给jQuery对象或者普通对象合并属性和方法一个是针对jQuery对象的实例,对于基本用法举几个例子: html代码如下: <!doctype html> <html> <head> <title></title> <script src='jquery-1.7.1.js'></script> </head> <body> <img src=''/>

js基于伪装的继承call()方法和apply()方法

function class1() { this.name = function(){ alert("class1的方法name()"); } } function class2() { class1.call(this);//要想实现class2继承class1 this就是当前对象class2. } 现在可以知道是否实现继承了: var cl = new class2(); cl.name();//class2继承了class1,class2是父类.调用父类的方法 注意到,call

react-router5.x 的配置及其页面跳转方法和js跳转方法

上次用react-router 的时候  还是3.x 很久不用 已经到react-router5.x 了 废话不多说 上代码 配置 react: ^16.8.6, react-dom: ^16.8.6, react-router: ^5.0.0, react-router-dom: ^5.0.0, import {HashRouter as Router,Route,Link,BrowserRouter ,Switch,Redirect} from 'react-router-dom'; ...

C语言实现strlen()4种方法和strcat()3种方法

#include <stdio.h> #include <assert.h> #if 0 // 默认使用法4 // 法1 int strlen(const char* str) { int n; // const char *p = str; //测试这句,这个语句不需要,因为我实参是指针,形参指针改变指向不影响实参指向 for(n = 0; *str != '\0'; n++) { str++; } return n; } #elif 0 // 法2 int strlen(con