js:语言精髓笔记12--动态语言特性(2)

对于括号内:

  • 通过赋值时发生的重写:
(Object1 = function() {}).prototype.value = 100;
var obj1 = new Object1;
console.log(obj1.value);  // 100
  • 语法声明阶段的重写: //会报错,一般引擎不承认在表达式中声明的标识符;
(function Object2() {}).prototype.value = 100;

重写:

  • 对内部对象系统的影响:

    • 重写内置构造器:任意构造器的原型属性不受内置构造器重写的影响,它总是创建自一个系统引擎中的构造器;
    • 重写内置构造器的原型:会影响内部对象系统;

 

时间: 2024-10-12 19:12:16

js:语言精髓笔记12--动态语言特性(2)的相关文章

Go语言学习笔记(一) [Go语言的HelloWorld]

日期:2014年7月18日 1.简介 Go 编程语言是一个使得程序员更加有效率的开源项目.Go 是有表达力.简 洁.清晰和有效率的.它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有性的模块化程序.Go 编译到机器码非常快 速,同时具有便利的垃圾回收和强大的运行时反射.它是快速的.静态类型编译语言,但是感觉上是动态类型的,解释型语言. Go 是第一个实现了简单的(或更加简单的)并行开发,且跨平台的类 C 语言. 2.Go语言文档查看 安装好Go语言之后,其文档可以通过go do

什么是静态语言,什么是动态语言?

定义 通常我们所说的动态语言.静态语言指 动态类型语言(Dynamically Typed Language)和 静态类型语言Statically Typed Language). 还有一个 Dynamic Programming Language (动态编程语言),静态编程语言. 动态类型语言:在运行期间检查数据的类型的语言.用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型.   === >脚本语言等弱类型语言 静态类型语言:相反静态类型语言是在运行前编译时检查类型.    ==>

js:语言精髓笔记1--语法

标识符: 命名: 语法以及类型----语法关键字 值(的存储位置)----变量和常量 绑定: 语法关键字对逻辑的绑定----作用域限定 变量对位置的绑定---变量生存周期的限定 声明:约定变量的生存周期和逻辑作用域: 标识符语义关系: 与值相关: 类型 变量: 直接量 对象 与逻辑相关: 控制流程语句: 标签声明 一般流程控制语句 异常 与值和逻辑都相关: 表达式: 值运算 对象存取 逻辑语句: 顺序 分支 循环 其他: 注释 JS引擎运行及响应错误:1.语法分析(语法分析错误):2执行(执行异

js:语言精髓笔记5----语言分类

计算模型:源于对计算过程的不同认识: 基于不同计算模型一般分为: 命令式语言: 函数式语言: 逻辑式语言: 面向对象程序设计语言: 基于程序本质分类: 命令式: 结构化编程(冯诺依曼:计算机系统以存储和处理为核心)[面向存储的编程]: 面向对象编程: 说明式: 函数式: 其他: //命令式语言基于存储结构进行算法设计:即:算法+数据结构=程序:数据的表形形式是编程的根本: 命令式语言面临的问题:如何抽象数据存储: 结构化编程:通过运算去改变内存: 结构: 控制结构:顺序,分支,循环: 组织结构:

js:语言精髓笔记3----语句

JS语句分类: 声明语句: 变量声明语句: 标签声明语句: 函数声明语句: 表达式语句:(表达式加分号) 变量赋值语句:具有声明一个变量的隐式效果: 函数调用语句; 属性赋值语句: 方法调用语句: 分支语句: 条件分支语句: 多重分支语句: 循环语句: for() for...in while do..while 控制结构: 继续执行子句: 中断执行子句: 函数返回子句 异常触发语句: 异常捕获与处理: 其他: 空语句: with语句: 声明语句与赋值语句: 声明语句(显示声明)一定就有var,

js:语言精髓笔记2--表达式

单词形式运算符:typeof,in,void,instanceof,new,delete. 表达式:由运算符和运算元构成:JS中没有运算符的表达式称为单值表达式:没有运算元,孤立与代码上下文的运算符是不符合语法的: 单值表达式: this引用: 变量引用: 直接量: null undefined 字符串 布尔值 数值 正则表达式 基本表达式: 单值表达式 数组初始器:[] 对象初始器:{} 表达式分组运算:()  运算符按结果值的分类: 一般表达式运算:(会强制类型转换) 数值运算 位运算 布尔

js:语言精髓笔记4----面向对象编程概要

实例创建:obj = new contructor[(arguments)]; //如果没有参数可以忽略括号:所以注意这不是函数调用: 直接量与初始器:在之前的基本表达式中将直接量与初始器分开,这时因为直接量的声明中不包括运算过程,而初始器的声明中可以包括运算过程. 直接量:一般分为6种,包括正则表达式声明:在引擎看来,其值是在编译期就确知的: 初始器:包括函数,对象,数组声明:其本身可能是无法预期的. 对象: delete:能删除对象的大多数成员,包括全局对象Global的成员:不能删除var

js:语言精髓笔记13--语言技巧

消除代码全局变量名占用: //本质是使用匿名函数: void function(x, y, z) { console.log(x + y + z); }(1,2,3); //要使函数内的变量不被释放,需要使用引用: 一次性的构造函数: //维护原型链,保证标识符重写后,实例.constructor仍指向构造器: var Instance = function() {}; Instance.prototype = { constructor: Instance } Instance = new I

javascript语言精髓笔记

javascript是一门浏览器语言,对于后台攻城湿们.则是这样对其定义的 1. js是一门前端语言,因为js通常是web中的view部分,用来渲染最终呈现给用户的页面. 2. js是一门弱类型语言和解释性语言,没有使用编译器(编译器会检查语法错误,同样性质的比如php,ruby,python等.当然,不能说完全没有编译过程,只是不是严格意义上的编译),因为编译的目的最终应该是生成可执行的代码,而不是中间结果. 本文将关注两个方面 1.js重要概念 2.js小tips  主要关注容易被忽略的小问