要理解这个,我们首先要理解一个概念“类”,所谓类,指的是对象的模版。对象就是类的实例。由前面我们知道,对象是单个实物的抽象,所以通常需要一个模版,表示某一类实物的共同特征,然后对象根据这个模版生成,这个过程就叫做对象实例化。但是在JS中是没有“类”这个概念的,而是用构造函数来作为对象模版的,所谓构造函数,指的就是专门生成对象的函数。

两个相关的概念:
类:比如 人类 (对象的模板、实物的共同特征)
通过关键字:new (在JS中是没有“类”这个概念的,而是用构造函数来作为对象模版的)
实例:比如 王小二 (
那么,王小二的父母孕育他直到出生的过程,就叫:实例化

 function Human(name){
this.name = name;
} var wangxiaoer = new Human('王小二'); //这一步叫作 实例化

JavaScript定义的函数为什么得实例化才能用

静态的成员变量和方法,都是不需要进行实例化类的。可以直接在类上调用进行,不能在类的实例上调用。静态方法通常用于创建实用程序函数。

非静态的成员变量和方法,都要进行实例化类的。才可以调用

关于静态的成员变量和方法的理解:

类(class)通过 static 关键字定义静态方法。不能在类的实例上调用静态方法,而应该通过类本身调用。这些通常是实用程序方法,例如创建或克隆对象的功能。

静态变量应该在静态区分配,不在堆上。每个变量定义的时候只能初始化一次,“初始化”从字面意思理解就是第一次,第二次赋值就不能算了。

就像上面说的,静态变量的生存期为整个程序,所以只能初始化一次。但是普通局部变量定义一次初始化后当函数结束调用变量就不存在了,再次调用的时候又分配一个变量又可以进行一次初始化。

所以多次调用多次定义了这个变量,从而多次初始化。

栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Classes/static

function a (){
  this.add = function(a,b){
    alert(a+b);
  }
} a.add(1,2);// a.add is not a function var A = new a();
A.add(1,2);//ok

如上,我定义了一个a,想直接调用a去不行,得实例化一个a才能调用其属性,为什么?

 
解答:
A.add(),这种调用方法属于对象的调用方法。即A是一个对象!而add是只是A函数里的一个方法,他的执行环境是在A函数里。你如果要这样调用A.add()。
也并不一定要实例化。可以这样:A.prototype.add = function(){} 这样add就变成了A对象里的一个属性。
 

关于JavaScript实例化的理解的更多相关文章

  1. javascript单例模式的理解

    javascript单例模式的理解 阅读目录 理解单例模式 使用代理实现单例模式 理解惰性单例 编写通用的惰性单例 单例模式使用场景 回到顶部 理解单例模式 单例模式的含义是: 保证一个类只有一个实例 ...

  2. JavaScript面向对象的理解

    JavaScript面向对象的理解  笔记链接: http://pan.baidu.com/s/1c0hivuS 1:JavaScript 中分两种对象,函数对象和普通对象new Function() ...

  3. javascript javascript面向对象的理解及简单的示例

    javascript面向对象的理解及简单的示例 零.本节重点: 1.封装: 2.继承: 壹.下面理解: 一. javascript面向对象概念: 为了说明 JavaScript 是一门彻底的面向对象的 ...

  4. javaScript深入浅出之理解闭包

    javaScript深入浅出之理解闭包 引言 闭包是个老生长谈的话题了,对于闭包网上也有很多不同的看法 <你不知道的javaScript>对于闭包是这么定义的:函数创建和函数执行不在同一个 ...

  5. javascript 之原型理解

    最近一直在了解javascript原型的问题,也算是理解了一点,希望把我所理解的,用简单的例子和说明,让更多人清除的去理解javascript原型 1,原型 prototype 是一个什么东西 我们创 ...

  6. javascript对象的理解

    从代码中体会javascript中的对象: <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

  7. JavaScript:彻底理解同步、异步和事件循环(Event Loop) (转)

    原文出处:https://segmentfault.com/a/1190000004322358 一. 单线程 我们常说"JavaScript是单线程的". 所谓单线程,是指在JS ...

  8. 通过JavaScript原型链理解基于原型的编程

    零.此文动机 用了一段时间的Lua,用惯了Java C++等有Class关键字的语言,一直对Lua的中的面向对象技术感到费解,一个开源的objectlua更是看了n遍也没理解其中的原理,直到看到了Pr ...

  9. javascript类的理解和使用

    距离上次写博客已经过去好几个月了,现在手里的项目正好都结束了,闲暇之后开始理一下开发中一些问题,这次说一下javascript当中的类,可能很多人对于写惯了前台页面效果的coder来说,对于javas ...

随机推荐

  1. 使用IDEA创建JavaWeb项目 部署本地tomcat并运行

    一.下载商业版IDEA 官方链接:https://www.jetbrains.com/idea/download/#section=windows 二.新建JavaWeb项目 1.在菜单栏找到File ...

  2. python的序列化模块

    最近机器学习的模型需要序列化和反序列化,因为写个博客总结一下几个模型和数据等序列化的模块.

  3. Codeforces 838E Convex Countour

    题 OvO http://codeforces.com/contest/838/problem/E (IndiaHacks 2nd Elimination 2017 (unofficial, unra ...

  4. django环境配置(基于命令行安装)

    一.django简介 Python服务端开发框架,Django是一个开放源代码的Web应用框架,由Python写成,Django采用了MVC的软件设计模式,即模型M,视图V和控制器C 二.安装配置dj ...

  5. File上次文件找不到文件相对绝对路径

    我的问题是因为文件的相对绝对路径上面有中午字符,把上面的中午字符全改为英文或者数字加特殊字符形式都可以

  6. PHP四种基本排序

    1. 冒泡排序 // 1.冒泡排序法 $array = [12,3,23,2,4,1,0]; function maoPao($arr){ //先判断是不是空数组 if(!empty($arr)){ ...

  7. SuperSocket框架的系列博文

    官方文档 http://docs.supersocket.net/v1-6/zh-CN 对于我等小白,此系列博文,受益匪浅,慢慢看 https://www.cnblogs.com/fly-bird/c ...

  8. jquery checked选择器 语法

    jquery checked选择器 语法 作用::checked 选择器选取所有选中的复选框或单选按钮.直线电机参数 语法:$(":checked") jquery checked ...

  9. python 通过序列索引迭代

    另外一种执行循环的遍历方式是通过索引,如下实例: #!/usr/bin/python # -*- coding: UTF-8 -*- fruits = ['banana', 'apple', 'man ...

  10. PHP-windows下IDEA配置网页地址