最近工作中用到,记录一下:假设我们需要一个功能,把一个数字比如10000输出为下面的字符串格式“10,000”,一般是写一个方法,那么我希望更方便一点,直接向Number类型添加一个格式化方法,比如叫toFormat的方法来实现得到格式化后的字符串. 添加.d.ts定义 要在TypeScript中扩展一个基础对象的方法需要预先告知编译器有该方法才行: interface Number { toFormat(): string; } 添加实现 具体实现根据需要编写即可,需要注意的是要添加在原型对象…
2.浏览器环境提供对象 (1) document对象 doucument对象属性: title:文本标题.doucument.title="Welcome"; lastModified:文档最后修改时间. URL 文档对应的页面地址. cookie:创建和获得信息 cookie. bgColor:文档背景色. fgColor: 文档前景色. location: 保存文档所有页面地址信息. alinkColor:激活链接的颜色. linkColor:链接的颜色. vlinkColor:已…
JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: function () { return this.myprop; } }; console.log(myobj.myprop); // `myprop` is publicly accessible console.log(myobj.getProp()); // getProp() is publ…
沙盘模式可以弥补命名空间模式中的两项不足之处: 使用唯一全局对象作为程序的全局变量入口,使得无法在同一程序中使用两个不同版本的API,因此它们使用的是同一个唯一的全局对象名,如MYAPP: 较长的嵌套对象使得代码编写和解析都比较慢: 沙盘模式,正如其名字所说,提供了一个各类模块可以共同“游戏”的环境,模块之间和沙盘之间不会相互影响. 这种模式在YUI3中大量被使用.下面介绍一种沙盘模式的实现方式: 1. 全局的构造函数 在命名空间模式中只有一个全局对象:在沙盘模式中,唯一的是一个全局的构造函数:…
这篇主要说一下在源码中jquery对象是怎样设计实现的,下面是相关代码的简化版本: (function( window, undefined ) { // code 定义变量 jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); }, // code 定义变量 jQuery.fn = jQuery.prototype = { jquery: core…
1.JavaScript内部对象属性和方法 (1)内置String对象 String 对象是JavaScript的核心对象之一. 创建一个sting对象: var a="this defines a string object" 或者var a=new String("this defines a string object") String 对象的属性:length和protoype. 例如:a.length;//给出字符串a中字符的个数 而protoype属性则…
原文地址: http://javascript.info/tutorial/native-prototypes 原生的javascript 对象在prototypes里面保存他们可用的方法. 比如,当我们创建一个新的对象时, 它并未包含任何东西,它怎么知道能够有个toString方法可供使用呢? var obj={}; alert(obj.toString()) 那是因为obj={}是下面语句 obj = new Object() 的缩写,而Object是原生的javascript 构造函数,而…
一.创建Number实例对象 /** * new Number(value); * value 被创建对象的数字值 * * Number 对象主要用于: 如果参数无法被转换为数字,则返回 NaN. 在非构造器上下文中 (如:没有 new 操作符),Number 能被用来执行类型转换 */ let number = new Number("1100"); console.log(number); //Number {1100} console.log(Number("123&q…
首先,单例模式是对象的创建模式之一,此外还包括工厂模式.单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3,向整个系统公开这个实例接口 Java中大概是这个样子: class Singleton { //私有,静态的类自身实例 private static Singleton instance = new Singleton(); //私有的构造子(构造器,构造函数,构造方法) private Singleton(){} //公开,静态的工厂方…
链式调用模式允许一个接一个地调用对象的方法.这种模式不考虑保存函数的返回值,所以整个调用可以在同一行内完成: myobj.method1("hello").method2().method3("world").method4(); 如果对象中有些方法不需要有返回值,就可以让它返回this引用,这个this引用就可以方便继续调用下一个方法: var obj = { value: 1, increment: function () { this.value += 1;…
虽然许多编程语言提供了const关键字来支持常量的声明,但JavaScript里没有表示常量的语义.我们可以用全大写的方式来声明变量,表明它实际上是个常量: Math.PI; // 3.141592653589793 Math.SQRT2; // 1.4142135623730951 Number.MAX_VALUE; // 1.7976931348623157e+308 通常这种常量会用对象来包装起来:比如上面的Math.要实现程序里需要的常量,可以这样做: // constructor va…
在支持“类”的面向对象语言中,静态成员指的是那些所有实例对象共有的类成员.静态成员实际是是“类”的成员,而非“对象”的成员.所以如果 MathUtils类中有个叫 max()的静态成员方法,那么调用这个方法的方式应该是这样的:MathUtils.max(3, 5). 1. 公有静态成员 JavaScript里并没有“类”的实际语言表示 ,所以也就没有静态成员的语义表示.但由于构造函数本身就是个对象,如果把构造函数看成“类”,那么它的成员就是可以通过“类”名(也就是构造函数)直接访问的“静态成员”…
模块模式可以提供软件架构,为不断增长的代码提供组织形式.JavaScript没有提供package的语言表示,但我们可以通过模块模式来分解并组织 代码块,这些黑盒的代码块内的功能可以根据不断变化的软件需求而不断的被添加,替代和删除.模块模式由几种我们已经介绍过的模式共同组成: 命名空间模式 即时函数模式 私有成员与访问控制方法模式 依赖声明模式 模块模式的第一步是建立一个命名空间.首先我们用先前介绍的namespace()方法创建一个工具模块例子,这个例子模块提供一些数组功能: MYAPP.na…
运用了命名空间(Namespace)模式后, 就可以使用一些JavaScript库了,比如YAHOO作用YUI2库的全局对象,可以通过 YAHOO.util.Dom 和 YAHOO.util.Event得到YUI2库中有关Dom和事件的支持.在程序中使用这些模块就是声明依赖(Declaring Dependencies)模式: var myFunction = function () { //dependencies var event = YAHOO.util.Event, dom = YAH…
JavaScript中的创建对象的基本方法有字面声明(Object Literal)和构造函数两种,但JavaScript并没有特别的语法来表示如命名空间.模块.包.私有属性.静态属性等等面向对象程序设计中的概 念.为了让JavaScript实现面向对象程序中的高级语义,人们发明了命名空间模式.依赖声明模式,模块模式,以及沙盘模式. 1. 命名空间模式 命 名空间模式解决了JavaScript中的两个问题,一是全局变量污染的问题,二是可能的名字冲突问题.虽然JavaScript没有特别支持命名空…
$() 即调用了jQuery.fn.init方法 jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); } 下面是init方法代码: init: function( selector, context, rootjQuery ) { var match, elem; if ( !selector ) { return this; } if ( typ…
接上一篇,jquery源码的这种写法叫做匿名函数自执行 (function( window, undefined ) { // code })( window ); 函数定义了两个参数window和undefined,执行函数传入了window对象. 参数window 因为变量对象的作用域链的关系,我们知道即使不传入window对象,函数内部也是可以访问到它的,那么,这里传入window对象的意义主要有两点: 1.提高性能 按照变量对象的作用域链顺序,函数会先在内部查找window变量,而函数内…
一.创建Map对象 Map 对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值 1.构造函数 语法:new Map([iterable])参数:         iterable  可以是一个数组或者其他 iterable 对象,其元素或为键值对,或为两个元素的数组:每个键值对都会添加到新的 Map,null 会被当做 undefined let arr = [1,2,3]; let myMap = new Map(arr.entries()); console.log(myMa…
jquery源码中涉及了大量原生js中的知识和概念,文章是我在学习两者的过程中进行的整理和总结,有不对的地方欢迎大家指正. 本文使用的jq版本为2.0.3,附上压缩和未压缩版本地址: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.js http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js 查看源码可以发现整体结构是这样: (function( window, undefined…
原理 万物皆为对象.假设将'莫德'(我)看成对象.莫德的属性有名字,性别,年龄等. 莫德的行为有吃饭,走路,睡觉等.莫德与他人的往来即对象间的交互.对象对应世界的一个实体.类,即管理对象的分类.如果莫德是具体的对象.男人即类.人即接口. 构建方式 单例对象:JSON 普通对象: (function(w,M){ M.InviteFriends = function(){ //构造函数 function InviteFriends(){}; //原型 InviteFriends.prototype…
客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节同样涵盖重要的web应用所需要的网络编程API.本地存储和检索数据.画图等.主要包含内容有以下章节: web浏览器中的javascript / window对象 /  脚本化文档 /  脚本化css / 事件处理 / 校本化http / jQuery类库 / 客户端存储  /  多媒体和图形编程 /…
目录 TypeScript学习第一章:TypeScript初识 1.1 TypeScript学习初见 1.2 TypeScript介绍 1.3 JS .TS 和 ES之间的关系 1.4 TS的竞争者有哪些? 1. ESLint 2. TSlint 3. CoffeeScript 4.Flow TypeScript学习第二章:为什么使用TypeScript? 2.1 发现问题 2.2 静态类型检查 2.3 非异常故障 2.4 使用工具 2.5 优化编译 2.6 显式类型 2.7 降级编译 2.8…
文章目录 1.工厂方法创建对象 1.1 代码块 1.2.测试结果 2.原型对象 2.1 代码 2.2 测试结果 3.toString 3.1 代码 3.2 测试结果 4.数组 4.1 代码 5.字面量创建数组.数组的方法 5.1 代码 5.2 测试结果 6.forEach遍历 6.1 代码 6.2 测试结果 7.splice和slice 7.1 代码 7.2 测试结果 8.Date对象 9.Math 10.包装类 10.1 代码 11.String对象 1.工厂方法创建对象 1.1 代码块 <!…
文章目录 1.对象的简介 2.对象的基本操作 2.1 代码 2.2 测试结果 3.属性和属性值 3.1 代码 3.2 测试结果 4.对象的方法 4.1 代码 4.2 测试结果 5.对象字面量 5.1 代码 5.2 测试结果 6.函数 6.1 代码 6.2 测试结果 7.全局作用域和局部作用域 7.1 代码 7.2 测试结果 1.对象的简介 2.对象的基本操作 2.1 代码 <!DOCTYPE html> <html> <head> <meta charset=&q…
JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中,对象被定义为无序属性的集合,属性可以是任何类型的值,包括其他对象或函数.函数作为属性值时称为“方法”,即对象的行为. (1)对象常用的内部属性 对象的内部属性是由JavaScript 规范定义的,由运行代码的系统来访问.对象常用的内部属性: prototype        对象        获…
一.JavaScript概述 1.1 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript 微软随后模仿在其IE3.0的产品…
所有编程语言都具有内部(或内置的)对象来创建 语言的基本功能.内部对象是 您编写自定义代码所用语言的基础, 该代码基于您的想象实现自定义功能.JavaScript 有许多 将其定义为语言的内部对象.本文介绍了一些 最常用的对象,并简要介绍了它们 有哪些功能以及如何使用这些功能. Number JavaScript Number 对象是 一个数值包装器.您可以将其与 new 关键词结合使用,并将其设置为一个稍后要在 JavaScript 代码中使用的变量: var myNumber = new N…
原文:JavaScript基础:数据类型的中的那些少见多怪 Javascript共有6种数据类型,其中包括3个基本数据类型(string,number,boolean).2个特殊数据类型(undefined,null) 和 1个引用类型 (object) .本篇文章将对这6种数据类型一一进行讲解,以加深对这些基础概念的理解和应用. string string类型的数据是由16位Unicode字符组成的字符串,用typeof检测其数据类型如下: var str = "Hi, Javascript&…
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征,那么对象呢?我们口口声声说要面向对象编程,可是找了这么久也没找到对象,这还怎么编程(滑稽).此对象非彼对象,Java中的对象是某个具体类的实例,就好比你和我都是人类这个大类的一个实例个体,也就是说,我们都是人类的一个具体对象,我们有各自的名字和年龄. 那为什么要用类和对象这样的概念呢? 这是一个好…
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. BOM的介绍 JavaScript的组成 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的元素的API.比如让盒子移动.变色.轮播图等. BOM:浏览器对象模型,操作浏览器部分功能的API.比如让浏览器自动滚动. 什么是BOM BOM…