js-函数

it2023-10-16  74

js–函数

/* * 作用域 * - 在js中一共有两种作用域 * 1、全局作用域 * -- 直接编写在script标签中的JS代码,都在全局作用域 * -- 全局作用域在页面打开时创建,在页面关闭时销毁 * -- 在全局作用域中有一个全局对象window * 它代表的是一个浏览器窗口,它由浏览器创建我们可以直 * 接使用 * -- 在全局作用域中: * 创建的变量都会作为window对象的属性保存 * 创建的函数都会作为window对象的方法保存 * 2、 局部作用域 */ this的指向情况 -1、以函数的形式调用时,this是window -2、以方法的形式调用时,谁调用方法this就是谁 -3、以构造函数的形式调用时,this就是新创建的那个对象 构造函数的执行过程 1、立即创建一个新的对象 2、将新创建的对象设置为函数中的this,在构造函数中可以使用this来引用新建的对象 3、逐行执行函数中的代码 4、将新建的对象作为返回值返回 原型 prototype 我们创建的每一个函数,解析器都会向函数中添加一个属性prototype 这个属性对应着一个对象,这个对象就是我们所谓的原型对象 如果函数作为普通函数调用,prototype没有任何实质性的作用 当函数以构造函数的形式调用时,它所创建的对象中都会有一个隐含属性, 指向该构造函数的原型对象,我们可以通过__proto__来访问该属性 function MyClass() { } var mc = new MyClass() console.log(mc.__proto__ == MyClass.prototype) // true MyClass函数对象 原型对象(0x123) prototype 0x123 (指向该原型对象) 通过MyClass创建的原型对象mc 隐含属性(__proto__) 0x123 (也指向该构造函数的原型对象) 原型对象就相当于一个公共的区域,所有同一类的实力都可以访问到这个原型对象, 我们可以将对象中共有的内容,统一设置到原型对象中。 // 向MyClass中添加属性a MyClass.prototype.a = 123 console.log(mc.a) // 123 所以: 当我们访问一个对象的属性或方法时,它会先在对象自身中寻找,如果有,则直接使用 如果没有,就会去原型对象中寻找,找到就直接使用 in 与 hasOwnProterty MyClass.prototype.name = '孙悟空' var mc = new MyClass() //使用in检查某个对象是否含有某个属性时,如果对象中没有原型中有,也会返回true console.log("name" in mc) // true // 使用hasOwnProterty()检查对象自身是否含有该属性 // 只有当对象自身中含有时,才会返回true console.log(mc.hasOwnProterty("name")) // false 原型对象也是对象,所以它也有原型 当我们使用一个对象的属性或方法时,先在自身中寻找 如果自身有,则直接使用 如果没有,去它的原型中寻找,如果原型中有,则使用 如果没有,去原型的原型中寻找,直到找到Object的原型 Object的对象的原型没有原型,如果还没找到,返回undefined console.log(mc.__proto__.hasOwnProperty('hasOwnProperty')) // false console.log(mc__proto__.__proto__.hasOwnProterty('hasOwnProperty')) // true console.log(mc.__proto__.__proto__.__proto__) // null

js–数组

- push() 向数组末尾添加 - pop() 删除数组末尾的元素 - unshift() 向数组开头添加元素 - shift() 删除数组开头的元素 - slice() - 用来提取指定元素 - 不会改变原数组 - 参数:(左闭右开) - 1、截取开始位置的索引,包含开始索引 - 2、截取结束位置的索引,不包含结束索引 - 第二个元素可以不写,此时截取会从开始索引往后的所有元素 - 索引可以传递一个负值,负值从后往前计算 - -1就是数组最后一个元素 - -2就是数组倒数第二个元素 - splice() - 可以用来删除数组中的指定元素 - 使用splice() 会影响到原数组,会将指定元素从愿数组中删除,并将删除的元素作为返回值返回 - 参数: - 1、表示开始位置的索引 - 2、表示删除的数量 - 3、第三个参数及以后,这些元素会自动插入到开始位置索引的前面 - concat() - 连接两个或多个数组 - 不会对原数组产生影响 - join() - 将数组转化为一个字符串 - 不会对原数组产生影响,而是将转化后的字符串作为结果返回 - 在join() 中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符
最新回复(0)