JS基础如何理解对象】的更多相关文章

这几天跟几个同事聊天发现他们对javascript什么时候该用new都不是很了解. 1.javascript的function什么时候该new什么时候不该new?我觉得主要的问题还是集中在javascript的弱类型上面. new在干什么 首先我们知道new是干什么,以我们java或.net的语言经验显然在创造对象.是的,不管是java还是.net.他是在创建一个对象. new后面是什么 那么我们考虑一下new的后面是什么,(java和.net)一般是被一个class修饰的类名称.那么我们考虑一…
JavaScript不是一门真正的面向对象语言,因为它连最基本的类的概念都没有,因此它的对象和基于类的语言中的对象也会有所不同.ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来讲,这就相当于说对象是一组没有特定顺序的值.对象的每个属性或方法都有一个名字,而每个名字都映射到一个值.我们可以把ECMAScript的对象想象成散列表:无非就是一组名值对,其中的值可以是数据或函数.每个对象都是基于一个引用类型创建的,这个引用类型可以是原生类型,也可以是开发人…
不同于其他面向对象语言(OO,Object-Oriented),JS的ECMAScript没有类的概念, 它把对象定义为"无序属性(基本值.对象.函数)的集合",类似于散列表. 每个对象都是基于一个引用类型(原生类型.自定义类型)创建的. 1. 理解对象 创建自定义对象(Object构造函数.对象字面量). // Object构造函数:创建一个Object实例,再为实例添加属性和方法. var person = new Object(); person.name = "xia…
一.JS基础 JS - javaScript 1.js功能: 1).进行数据的运算.2).控制浏览器的一些功能.3).控制元素(属性.内容.样式) js引用位置: 可以放在html页的任意位置. 推荐放在<html></html>后边. 也可以放在一个以js结尾的文件内,将该文件引用到html页内. 2.格式: <script type="text/javascript"> js代码 </script> 1.alert("&qu…
今天来总结一下js中的常用对象: 1.string对象 常用方法: charAt():返回在指定位置的字符. charCodeAt():返回在指定的位置的字符的 Unicode 编码. concat():连接字符串. fromCharCode():从字符编码创建一个字符串. String indexOf():检索字符串,返回字符串出现的位置,如果没有找到,返回-1. lastIndexOf():从后向前搜索字符串,返回字符串出现的位置,如果没有找到,返回-1 . split():把字符串分割为字…
JS内置对象[字符串] // charAt() 返回字符 // charCodeAt() 返回字符的unicode编码 var str="hello world"; console.log(str.charCodeAt(4)); // indexOf() 返回出现的位置 // 没找到则返回-1 var email="marry.mail@sohu.com"; console.log(email.indexOf("o")); console.log…
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-…
BOM 对象 JavaScript分为 ECMAScript,DOM,BOM. BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其他与页面内容不直接相关的动作.使 JavaScript 有能力与浏览器“对话”. DOM (Document Object Model)是指文档对象模型,并非一个对象.window.document都是一个实例对象,他们都属于Object,表示浏览器中打开的窗口. 1. window对象 windo…
Array对象的方法   Array.isArray(对象)---->判断这个对象是不是数组 instanceof关键字 判断对象是不是数组类型:两种方法: //1 instanceof var obj = []; console.log(obj instanceof Array);//ture //2 使用数组的 console.log(Array.isArray(obj));//ture .concat(数组,数组,数组,...) 组合一个新的数组 var arr1 = [10, 20, 3…
实例方法---->必须要通过new的方式创建的对象(实例对象)来调用的方法 静态方法---->直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用的) 字符串的常用属性: .length------>字符串的长度 var str = "12345"; console.log(str.length); .charAt(索引),返回值是指定索引位置的字符串,超出索引,结果是空字符串 var str = "whatareyounoshalei&quo…
String---->是一个对象 字符串可以看成是字符组成的数组, 但是js中没有字符类型 字符是一个一个的, 在别的语言中字符用一对单引号括起来 在js中字符串可以使用单引号也可以使用双引号 因为字符串可以看成是数组, 所以, 可以通过for循环进行遍历 字符串特性: 不可变性, 字符串的值是不能改变 字符串的值之所以看起来是改变的, 那是因为指向改变了 ,并不是真的值改变了 var str = "123"; str = "456"; console.log…
创建实例对象 var dt = new Date(); //当前的时间---当前的服务器 console.log(dt); var dt = new Date("2017-08-12");//传入时间写法1 //传入的时间 console.log(dt); 传入时间也可以这样写: var dt = new Date("2017/08/12"); //传入时间写法2 //传入的时间 console.log(dt); //获取时间的对象 var dt = Date.no…
系统Max求最大值: var result= Math.max(10,20,30,40); console.log(result); 练习1:自己定义一个对象,实现系统的max的方法   //例子:自己定义一个对象,实现系统的max的方法 function MyMath() { //添加了一个方法 this.getMax = function () { //所有数字中的最大值 var max = arguments[0]; for (var i = 0; i < arguments.length…
    推荐查看MDN----在线的帮助文档 实例对象: 通过构造函数创建出来,实例化的对象 静态对象: 不需要创建,直接就是一个对象,方法(静态方法)直接通过这个对象名字调用 实例方法必须通过实例对象调用 静态方法必须通过大写的对象调用       Math.PI----π     Math.E----常数的底数     Math.abs(值)-----绝对值     Math.ceil(值)----向上取整     Math.floor(值)---向下取整   console.log(Mat…
引入: //计算两个数字的和 function f1(x, y) { return x + y; } //计算三个数字的和 function f2(x, y, z) { return x + y + z; } //计算四个数字的和 function f3(x, y, z, k) { return x + y + z + k; } //计算五个数字的和 function f4(a, b, c, d, e) { return a + b + c + d + e; } //计算六个数字的和 funct…
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var obj = { name:"孙悟空", age:18, gender:"男", address:"花果山" }; /…
原型prototype 我们创建的每一个函数,解析器都会向函数中添加一个属性prototype 这个属性,对应着一个对象,这个对象就是我们所谓的原型对象 1.如果函数作为普通函数调用prototype没有任何作用 2.当作为构造函数调用时,它所创建的对象中,都会有一个隐含的属性,指向该构造函数的原型对象. 隐含属性:__proto__ function MyClass(){ }; var mc = new MyClass(); console.log(mc.__proto__ == MyClas…
Array对象 lenght 获取到数组的长度 concat() 方法用于合并两个或多个数组.此方法不会更改两大有数组,而是返回一个新的数组 let arr1 = ["a","b","c"]; let arr2 = ["d","e","f"] let arr3 = arr1.concat(arr2) console.log(arr3);// [ "a", "…
格式化后的指定格式的日期和时间,封装一个函数 function getDate() { var dt = new Date(); var year = dt.getFullYear(); var month = dt.getMonth(); var date = dt.getDate(); var hour = dt.getHours(); var minute = dt.getMinutes(); var second = dt.getSeconds(); month = month < 10…
欢迎访问我的个人博客:http://www.xiaolongwu.cn Array.prototype.slice.call(arguments)的作用为:强制转化arguments为数组格式,一般出现在框架活插件的源码中 如何理解 上面的代码等价于[ ].slice.call(arguments) 或者随便一个数组调用都行 [1,2,4].slice.call(arguments) 因为,前面的调用者的作用只是沿着原型链向上找,最终找到Array为止,slice为Array原型上的一个方法 s…
前言 上篇文章详细解析了原型.原型链的相关知识点,这篇文章讲的是和原型链有密切关联的继承,它是前端基础中很重要的一个知识点,它对于代码复用来说非常有用,本篇将详细解析JS中的各种继承方式和优缺点进行,希望看完本篇文章能够对继承以及相关概念理解的更为透彻. 本篇文章需要先理解原型.原型链以及call的相关知识: JS基础-函数.对象和原型.原型链的关系 js基础-面试官想知道你有多理解call,apply,bind? 何为继承? 维基百科:继承可以使得子类具有父类别的各种属性和方法,而不需要再次编…
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. 这是第一篇:理解对象,认识对象属性的类型. 二.理解对象 书中原话--ECMA-262中把对像定义为:无序属性的集合.其中属性可以是基本值,对象或者是函数. 1.我们通俗点理解一下 对象是一个真实存在的东西,就像世上每一个人.每一个物体一样,它有自己的属性,行为.也就是说各种属性集合在一起就是一个…
本文重点是要梳理执行上下文的生命周期中的建立作用域链,在此之前,先回顾下关于作用域的一些知识. 1.什么是作用域(scope)? 在<JavaScritp高级程序设计>中并没有找到确切的关于作用域的定义,只是在"4.2执行环境及作用域"中简单说了下执行环境(execution context)的概念.而执行环境其实就是之前博客:js基础梳理-究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?中的执行上下文. 而在<JavaScript权威指南>中,对作…
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. 这是第一篇:理解对象,认识对象属性的类型. 二.理解对象 书中原话--ECMA-262中把对像定义为:无序属性的集合.其中属性可以是基本值,对象或者是函数. 1.我们通俗点理解一下 对象是一个真实存在的东西,就像世上每一个人.每一个物体一样,它有自己的属性,行为.也就是说各种属性集合在一起就是一个…
首先,回顾下上篇博文中js基础梳理-究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?的执行上下文的生命周期: 3.执行上下文的生命周期 3.1 创建阶段 生成变量对象(Variable object, VO) 建立作用域链(Scope chain) 确定this指向 3.2 执行阶段 变量赋值 函数引用 执行其他代码 1.什么是变量对象(Variable Object) 在写程序的时候会定义很多变量和函数,那js解析器是如何找到这些变量和函数的? 变量对象是与执行上下文对应的概念,在…
JS基础学习--对象 什么是对象 对象object是JS的一种基本数据类型,除此之外还包括的基本数据类型有string.number.boolean.null.undefined.与其他数据类型不同的是,对象是一种复合值,由多个键值对组成,这些键值对也可以看成对象的属性集合,键为属性名,值为属性值(任意数据类型). object又可以分成多种子类型,称为JS的内置对象,包括String.Number.Boolean.Function.Array.Data.RegExp(regular expre…
JS的原型.原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个概念一知半解,碰到问题靠"猜",却不理解它的规则! prototype 只有函数有prototype属性 let a = {} let b = function () { } console.log(a.prototype) // undefined console.log(b.pro…
javascript面向对象编程方式,对于初学者来说,会比较难懂. 要学会面向对象以及使用面向对象编程,理解对象的创建在内存中的表示,至关重要. 首先,我们来一段简单的对象创建代码 var obj = new Object(); obj.userName = 'ghostwu'; obj.showUserName = function(){ return obj.userName; }; var obj2 = new Object(); obj2.userName = '卫庄'; obj2.sh…
   前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学,经过初步的学习,会对这一门语言有了一定深入的了解,也会感受到这一门语言的强大之处.希望各位同学通过一定的学习,会得到等大的收获. 因为是最后一篇所以内容可能有点多,希望各位同学能够慢慢看,细细看,让我们一起学习,一起进步,一起感受JS的魅力. 一函数 函数的声明及调用 1.函数的声明格式: func…
我们先从盘古开天辟地时捋一捋对象: 从宏观内容来讲,javascript是一个属性的集合,包括值,函数,而整个集合也可以类比为一个对象. js = { a的变量名: a的值, ... 函数b: function () {} ... } 注: 这里的js指的是javascript对象(ECMAscript对象),而不是DOM和BOM对象. 紧接着我们听到一个“传说”:‘javascript中一切都是对象’  ,或者说是有这么一个说法,但到底说的正确还是不正确,我们还需要自己追根溯源,挖掘一下: 从…