文章目录

  • 对象
    • 对象的分类
    • 创建、读取、删除属性、[]、in
    • 引用数据类型
    • 对象字面量
    • 函数
      • 创建与调用
      • 函数的参数
      • 函数的返回值
      • 立即执行函数
    • 方法
      • 枚举对象中的属性
    • 作用域
      • 全局作用域
      • 声明变量
      • 函数作用域
      • this
    • 使用工厂方法创建对象
    • 使用构造函数创建对象(类)
      • instanceof判断类的实例
    • 原型对象创建方法
      • 原型prototype
      • 构造函数与方法创建
      • 原型对象与属性
    • 对象的toString方法
    • 垃圾回收

对象

对象的分类

  • 内建对象
  1. 由ES标准定义的对象,任何ES的实现都可以使用。
  2. 比如:Math、String、Object……
  • 宿主对象
  1. 由JS的运行环境提供的对象,主要是由浏览器提供。
  2. 比如BOM、DOM。
  • 自定义对象

开发人员自己创建的对象。

创建、读取、删除属性、[]、in

var obj = new Object();

obj.name = “孙悟空”;

console.log(obj.name);

  • 如果读取对象没有的属性,则返回undefined。

delete obj.name;

  • 对象属性名不强制要求标识符的规范。

obj[“123”] = “hello”;
console.log(obj[“123”]);

  • 使用[]操作属性,更加灵活。在[]传递一个变量,也会将变量值传为该属性。

n = 123;
consile.log(obj[n]);

  • in运算符,检查是否含有指定属性。

console.log(“name” in obj);

引用数据类型

涉及基本数据类型与引用数据类型。

  • 基本数据类型,在栈内存中存储。

  • 引用数据类型,在堆内存中存储。

  • new表示在堆内存中申请空间。在栈内存中保存对应与堆内存的地址(对象的引用)。

var obj = new Object();
obj name = “Tom”;
var obj2 = obj;

则obj与obj2在栈内存中保存相同地址,指向堆内存中相同空间。

对象字面量

var obj = {};

  • 用{}与new效果一样。
  • 用{}可以直接指定对象中属性。

var obj2 = {name:“阿尼”, age:20};

函数

创建与调用

  • 函数也是一个对象。
  • 函数中可以封装一些功能。

var fun = new Function();

  • 可以将代码以字符串的形式传递给构造函数。但很少使用。

var fun = new Function(“console.log(“Hello”)”);

fun();

  • 使用函数声明来创建函数。

function 函数名([形参1, 形参2, …]){}

var 函数名 = function([形参1, 形参2, …]){}

函数的参数

  • 函数的实参可以是任意的数据类型。

  • 实参也可以是一个对象。当参数过多时,可以把参数封装在对象中。

函数的返回值

  • 使用return设置返回值。
  • return可以返回一个对象。

function sum(a , b , c){
var d = a + b + c;
return d;
}

  • 使用return可以结束整个函数。

立即执行函数

(function(a,b){})(123,456);

方法

obj.sayName = function(){};

  • 函数也可以成为对象的属性,此时为对象的方法。

枚举对象中的属性

for(var n in obj){
console.log(“属性名:”+n);
console.log(obj[n]);
}

2019年7月16日20:27:06:b站上的教学视频av34087791上午还能看,晚上就被取消了。当年学java也是因为课程突然被取消而放弃。现在不是当年。学到P59,改学作用域了。搜索视频号“av34087791”,在CSDN上发现该课程的笔记,把剩下的基础知识补全。

资源:https://blog.csdn.net/ishenjiaming/article/details/86583635

作用域

全局作用域

  • 全局作用域在页面打开时创建,在页面关闭时销毁。

  • 在全局作用域中有一个全局对象window,它代表浏览器的窗口,它由浏览器创建,可以直接使用。

在全局作用域中:

  1. 创建的变量都会作为window对象的属性保存;
  2. 创建的函数都会作为window对象的方法保存。
  • 全局作用域中的变量都是全局变量,在页面的任何部分都可以访问到。

声明变量

使用var声明变量并赋值等于增加一个变量。

使用var声明的变量会在代码执行前被声明(但是不会赋值)。

使用函数生命形式创建的函数function 函数(){},会在代码执行前被创建,因此可以在函数声明前来调用。如果使用函数表达式创建的函数,则不会被声明提前。

函数作用域

调用函数时创建函数作用域,函数执行完毕,作用域销毁。

函数中不使用var声明的新变量,都会成为全局变量。

function test(){var a = 10;
c = 99;
}
test();
console.log©; //输出99
console.log(a); //错误

this

this指代当前对象,如果没有当前对象,则this指window。

  1. 以函数形式调用时,this是window;
  2. 以方法形式调用时,谁调用方法this就是谁;
  3. 以构造函数形式调用时,this是新创建的对象。

使用工厂方法创建对象

可以使用工厂方法大批量创造相同性质的对象,但是不推荐使用。

function createPerson(name, age, gender){
var obj = new Object();
obj.name = name;
return obj;
}

var obj1 = createPerson(“Tom”);
var obj2 = createPerson(“Tim”);

缺点:使用工厂方法创建的对象类型都是object,无法区别不同的对象类型。

使用构造函数创建对象(类)

构造函数习惯上首字母大写,需要关键字new来调用。

function Person(name, age, gender){
this.name = name;
this.sayName = function(){
alert(this.name);
};
}

var per = new Person(“Tom”);
var per = new Person(“Tim”);

instanceof判断类的实例

console.log(per instanceof Person); //“true”

  • 所有对象都是Object的实例。

原型对象创建方法

原型prototype

创建的每一个函数,解析器都会向函数中添加一个属性prototype,这个属性对应着一个对象,即原型对象。

  • 如果函数作为普通函数调用prototype,没有任何作用;
  • 当函数以构造函数的形式调用时,它所创建的对象中都会有一个隐含的属性,指代向该构造函数的原型对象,可以通过__proto__来访问该属性。

function MyClass(){
}
var mc = new MyClass();
console.log(mc.__proto__ == MyClass.prototype); // “true”

  • 向构造函数的原型对象里添加一个属性,那么通过该构造函数创建的对象实例都可以访问到该属性。

MyClass.prototype.a = 123;
var mc = new MyClass();
console.log(mc.a); // “123”

构造函数与方法创建

  • 添加一个方法的正确形式,是将类的方法写到原型对象中。

MyClass.prototype.sayHello = function(){
alert(“Hello”);
};

原型对象与属性

  • 使用对象的hasOwnProperty()来检查自身中是否含有该属性。

console.log(mc.hasOwnProperty(“name”));

  • 原型对象也有原型。

console.log(mc.__proto__.__proto__.hasOwnProperty(“hasOwnProperty”));

  • Object对象的原型没有原型。

对象的toString方法

在页面中打印一个对象时,返回[object Object],实际上调用了对象的toString()方法。

可以修改对象或者原型的toString。

per.toString = function(){return “hello”;};
Person.prototype.toString = function(){return “world”;};

垃圾回收

  • JS中有自动的垃圾回收机制。

  • 将不再使用的对象设置null即可。

JavaScript对象快速入门相关推荐

  1. 【JavaScript:快速入门】

    文章目录 JavaScript 1. 快速入门 1.1 引入JavaScript 1.2 基本语法入门 1.3 数据类型 1.4 严格检查模式 'use strict' JavaScript Java ...

  2. JavaScript(一)——快速入门

    文章目录 1. JavaScript概述 2. 历史 3. 快速入门 3.1 引入JavaScript方式 3.2 基本语法 3.3 数据类型 4. 严格检查模式 1. JavaScript概述 Ja ...

  3. html遍历集合如何修改其中一,JavaScript简单快速入门

    " 别害怕顾虑,想到就去做,这世界就是这样,当你把不敢去实现梦想的时候梦想就会离你越来越远,当你勇敢地去追梦的时候,全世界都会来帮你."你好,我是梦阳辰!未来我陪你一起成长! 01 ...

  4. 什么是JavaScript(快速入门)

    目录 1.什么是JavaScript 概述 历史 特点 2.基本使用及HelloWorld 1.引入JavaScript 2.基本语法 网页功能(F12): 3.浏览器控制台使用 4.数据类型快速浏览 ...

  5. 【JavaScript】JavaScript之快速入门

    一.基本概念         JavaScript是一种基于对象(Object Based)和事件驱动(Event Driver)的脚本语言,它本身提供了非常丰富的内部对象供开发人员使用.       ...

  6. javascript基础快速入门

    javascript 是基于对象和事件驱动的脚本语言. 1.javascript 的基本标签 <script type="text/javascript">js代码&l ...

  7. JavaScript Promise 快速入门

    Promise 是什么? Promise 是ECMAScript 6中提供了一个类 . Promise 实例对象代表一个异步操作的最终完成或者失败. Promise 能干什么? 可以在Promise对 ...

  8. JavaScript数组快速入门

    文章目录 创建数组 常见属性 二维数组 常见方法 push() pop() unshift() shift() forEach() slice() splice() contact() join() ...

  9. 快速入门html、css和javascript

    基本标签(a.p.img.li.table.div.span).表单标签.iframe.frameset.样式 1:Html (Hypertext Markup Language) 超文本标记语言 2 ...

最新文章

  1. 报名 | 从滴滴出行数据透视中国城市空间发展讲座
  2. learn python the hard way结尾_翻译学python---《Learn Python the hard Way》---第一章 绪论
  3. 真AI用钱表达:这家少年班毕业生创办的AI公司三年就盈利,增速300%
  4. Myeclipse优化设置,加速你的开发武器
  5. java培训第一阶段测试总结_java学习的第一阶段总结
  6. java coin介绍_代码示例中的Java 7:Project Coin
  7. Java轻量级业务层框架Spring两大核心IOC和AOP原理
  8. 等效全向辐射功率(EIRP)
  9. 漫谈四种主流软件架构演进史
  10. catia设计树_在CATIA目录树上**零件号原来这么简单!
  11. php中ne,eq相等 ne、neq不相等, gt大于, lt小于
  12. twitter点赞图标分析
  13. 搞事开始——Python基于PC版微信实现机器人
  14. 怎么打开本地计算机策略编辑器,打开本地组策略编辑器; 2.在弹出的本地组策略编辑器窗口...
  15. 悲观锁和乐观锁的区别及使用场景
  16. 实验室方法检出限和定量限标准做法
  17. vue 引入高德地图 路线规划
  18. 【Chaos混沌】基于Simulink的Chaos混沌电路设计
  19. NFT带给我们普通人的机遇是什么?
  20. fluent二维叶型仿真_Hitalk—长沙理工大学机械软件仿真作品设计大赛

热门文章

  1. JS之经典for循环闭包问题解决方法
  2. sun.misc.BASE64Encoder找不到的解决方法
  3. python爬虫中文乱码解决方法
  4. 对网站实施“记住我”的最佳方法是什么? [关闭]
  5. 计算机网络对等模式,计算机网络有两种常用的工作模式,它们是对等模式和客户/服务器模式。QQ聊天属于________模式。...
  6. win11应用商店怎么联网 Windows11应用商店无法联网的解决步骤
  7. Web项目中前端页面通过URL传中文或 # 特殊字符到后台出现乱码解决方案
  8. python服务端编程_Python实现的简单文件传输服务器和客户端
  9. c语言 char转int_第三章、C语言中的数据类型
  10. iphone个人热点无法开启_iPhone无法开启个人热点怎么回事【解决方法】