全局对象

ECMAScript 规定全局对象叫做 global,但是浏览器把 window 作为全局对象(浏览器先存在的)

window 就是一个哈希表,有很多属性。

window 的属性就是全局变量。(所有window的属性前面都可以省略window,直接调用)

这些全局变量分为两种:

  1. 一种是 ECMAScript 规定的
  • global.parseInt
  • global.parseFloat
  • global.Number
  • global.String
  • global.Boolean
  • global.Object

2. 一种是浏览器自己加的属性

  • window.alert
  • window.prompt
  • window.comfirm
  • window.console.log
  • window.console.dir
  • window.document
    • window.document.createElement
    • window.document.getElementById

全局函数

  1. Number

var n = new Number(1) 创建一个 Number 对象

var n1 = 1 与var n2 = new Number(1) 的区别是什么?

内存图解

*n2包装成对象后里面有一些内嵌函数可以调用,n1就只是一个单独的数字。但是n1也可以调用这些方法,原因是给n1创建了一个临时变量,当这一个语句执行完该临时变量就被销毁。

var n = 1
n.xxx = 2  //不会报错
console.log(n.xxx) //undefined,因为上一句创建的临时变量已经被销毁,现在是另一个新的临时变量

2. String
var s = new String('hello') 创建一个 String 对象
'hello' 与 new String('hello') 的区别是什么?同上

常用api:

  • str.trim() — 去掉空格
  • str.charAt(’s’) — 返回’s'字符在该字符串中的位置
  • str1.concat(str2) — 将两个字符串连接在一起
  • str.slice(index1,index2) — 根据index截取字符串(包含index1,不包含index2)
  • str.replace(’s’,'r’) — 将字符串中的’s’换成’r'

3. Boolean

var b = new Boolean(true) 创建一个 Boolean 对象

true 与 new Boolean(true) 的区别是什么?--同上

var b = new Boolean(false)
var b1 = false
if(b){console.log(’b’)}
if(b1){console.log(’b1’)}
//输出:b,因为b是一个对象,所有对象都返回true

4. Object

var o1 = {}

var o2 = new Object()

o1 和 o2 没区别

var o1 = {}
var o2 = new Object()
o1 === o2  //false,因为o1和o2地址不同


公用属性

所有对象都有 toString 和 valueOf 属性,不需要在每个对象里重复,为了节省内存,JS 的做法是把 toString 和 valueOf 放在一个对象里(暂且叫做公用属性组成的对象),然后让每一个对象的 __proto__ 存储这个「公用属性组成的对象」的地址

内存图解

但像Number这样的对象还有自己的一些共用属性(eg: toString(16)转成16进制),所以它的第一个 __proto__存的是Number独有的共用属性,然后有第二个 __proto__存的是所有对象的共用属性。

内存图解

String、Boolean也同理。

⚠️共用属性也就是原型(prototype)

原型链

prototype和_proto__的区别:

prototype是在我们还没写代码时浏览器就准备好了的,是对共用属性的引用(为防止垃圾回收);

__proto__是我们写了代码创建了对象后产生的,也是对共用属性的引用(这个对象被销毁,不再引用共用属性,共用属性也不会被回收,因为prototype会一直指向共用属性)。

内存图解

重要公式

var 对象 = new 函数()
对象.__proto__ === 对象的构造函数.prototype
// 推论
var number = new Number()
number.__proto__ == Number.prototypevar object = new Object()
object.__proto__ == Object.prototypevar function = new Function()
function.__proto__ == Function.prototype
// 另外,所有函数都是由 Function 构造出来的,所以
Number.__proto__ == Function.prototype // 因为 Number 是函数,是 Function 的实例
Object.__proto__ == Function.prototype // 因为 Object 是函数,是 Function 的实例
Function.__proto__ == Function.prototye // 因为 Function 是函数,是 Function 的实例!

js去掉前后空格的函数_StudyNote -- JS原型 amp; 原型链相关推荐

  1. js去掉前后空格的函数_JS的全局对象/原型与原型链

    全局对象: global(在标准里的叫法) window(在浏览器里的叫法) global.parseInt //跟直接parseInt没啥区别 window下面的属性分为两类: 1.ECMAScri ...

  2. js去掉前后空格的函数_Vue.js巧妙运用修饰符,帮你后期维护代码省下大量的时间...

    点击上方"前端印象",选择"设为星标"第一时间关注技术干货! 引言 其实我们在平时总会用到一些方法去处理我们的事件函数,比如阻止事件的默认行为 .阻止事件冒泡等 ...

  3. js去掉前后空格的函数_2020年最火爆的Vue.js面试题

    2020年Vue面试题 Interview ●●●● 作者:@烦恼会解决烦恼 vue核心知识--理论篇 1.对于Vue是一套渐进式框架的理解 渐进式代表的含义是:主张最少. Vue可能有些方面是不如R ...

  4. js去掉前后空格的函数_50道常见的js面试题

    点击上面"蓝字"关注我们! NO.1 分享50道js的面试提 不管是面试还是学习,积累知识,回顾知识都是必不可少的,所以今天分享一些积累的题吧,多数你可能都见过,如果有没见过的,帮 ...

  5. js去掉前后空格的函数_MySQL 中常见的字符串函数应用详解

    在前面若干章节中,我们介绍了SQL的基础与高阶语法,接下来,我们将分四个章节,介绍MySQL中常见的函数应用,大致分为如下几个章节: MySQL 字符串函数 MySQL 数字函数 MySQL 日期函数 ...

  6. js去掉前后空格的函数_python常用函数有哪些

    Python常用函数: 1. print()函数:打印字符串 2. raw_input()函数:从用户键盘捕获字符 3. len()函数:计算字符长度 4. format(12.3654,'6.2f' ...

  7. js去掉前后空格的函数_JavaScript 实现中英文空格

    写普通的文案时,我们有约定如何使用空格,但动态内容的处理有两种麻烦情况: 字符串插值,例如 {nameA}赞同了{nameB}的回答 文本有时表达式一侧,有时在表达式两侧,也有可能表达式连在了一起 各 ...

  8. js去掉头尾空格、括号

    去掉头尾空格 trimSpace = (str: string) => {const reg = /^\s+|\s+$/g;return str.replace(reg, "" ...

  9. JS(去掉前后空格或去掉所有空格)的用法

    1.  去掉字符串前后所有空格: 代码如下: function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } 说明 ...

最新文章

  1. 专访英特尔戴金权 | AI和大数据正在这样重塑英特尔
  2. uni-app-微信小程序实现输入卡号 每四个为一组中间为空格(也可以取消空格)
  3. 程序解析excel中的图片_产品日志丨支持导入Excel中的图片amp;批量修改后期实体字段...
  4. printf输出字符串_c语言入门 第十二章 字符串
  5. Elasticsearch】es memory locking requested for process but memory is not locked
  6. 2019最有意思的五大 ZDI 案例之:通过调色板索引实现 Win32k.sys 本地提权漏洞(上)...
  7. 从SharePoint 2013迁移到SharePoint Online - 评估工具
  8. springboot修改项目不需要重启服务器
  9. linux中配置vsftpd
  10. 7.1立体环绕追踪音效|专属个性调音台,这副头戴电竞耳机有点料
  11. 英语背单词软件需求分析
  12. SAP ABAP 常用事务代码
  13. 面试题--5个数能组成多少中不同的二叉搜索树的结构--卡特兰数
  14. 包装用超声波密封行业研究及十四五规划分析报告
  15. 阿里巴巴年薪800k大数据全栈工程师成长记
  16. vimscript:编写Vim脚本
  17. python 读取csv文件转成字符串,python实现csv格式文件转为asc格式文件的方法
  18. matlab 归一化功率谱,求大神指点如何画归一化功率谱的图像啊
  19. 逻辑运算符,与,或,非,以及优先级。
  20. C语言中实现十进制转二进制输出

热门文章

  1. Shell脚本生成字典实例分析
  2. 分类算法学习(python)
  3. 汽车美容行业为什么需要会员管理系统?
  4. 4. 定时器(TIM)(定时器计数)
  5. 武大计算机考研拟录取名单,2021武汉大学考研拟录取名单已公布
  6. html的悬停图片缓慢放大,css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)...
  7. 轻量级Kubernetes之k3s:7:集群一键部署脚本
  8. java开源工具简介
  9. 报名启动 | 2021华为软件精英挑战赛正式开启,冠军奖金20万!
  10. 节点光端机在高速公路监控系统中的应用介绍