@Wangww0925
2019-08-07T07:53:29.000000Z
字数 4848
阅读 198
js-笔记
对象 Object: 一切皆对象
对象是一种数据类型
对象是描述一个具体的事物
对象可以看做属性的无序集合
引号可以省略
以 关键字 或 - 来命名不能省略引号,如:'if'、'skill-2';不推荐使用关键字
,逗号隔开
最后一个值不需要用逗号
var obj = {
name:'www',
'if':10,
'skill-2':'css'
}
console.log(obj.name); // 返回 www
console.log(obj.if); // 返回 10,但是不推荐使用关键字
// console.log(obj.skill-2); // 返回 NaN ,不能查询结果
console.log(obj['skill-2']); // 返回 css
针对于前端来说,JS运行在浏览器上,浏览器就是JS的宿主
htmlElement(元素) comment(注释) text(文本) attribute(属性)
1. 创建一个空对象
var obj1 = {};
2. 创建一个对象,并赋值
var obj2 = {
name:'www',
age:18,
sex:'女'
}
3. 包含 数组、属性、方法 的对象
var obj3 = {
user:['html','css','js'],
type:'post',
test:function(){
console.log('我是一个方法')
}
}
构造函数的名字: Object Array Number String ......
var obj4 = new Object(); // 创建空的对象
需要传入原型
1、 只有一个参数,不继承构造函数的方法和属性
function User(){
this.name = 'www';
this.age = 12;
}
var obj = Object.create(User.prototype);
console.log(obj); // 返回 User {}
console.log(obj.name); // 返回 undefined
2、 两个参数,参数二传入对象描述
function Info(){}
var obj3 = Object.create(Info.prototype, {
name:{
value:'www'
}
})
console.log(obj3); // 返回 Info {name: "www"}
console.log(obj3.name); // 返回 www
var obj = {}
obj.name = 'www'; // 使用. 添加属性
// obj['name'] = 'www'; // 使用[] 添加属性
// 添加方法
obj.test = function(){
console.log('I can play');
}
console.log(obj); // 返回 {name: "www", test: function(){}}
var obj = {}
obj.name = 'abc';;
obj.test = function(){
console.log('I can look A movie');
}
console.log(obj); // 返回 {name: "abc", test: function(){}}
var obj = {
name: "abc",
test: function(){
console.log('I can look A movie');
}
}
console.log(obj.name); // 返回 abc
console.log(obj['name']); // 返回 abc
obj.test(); // 返回 I can look A movie
var obj = {
age:99
}
var a = 'age';
console.log(obj.a); // 返回 undefined,属性里面没有a属性
console.log(obj[a]); // 返回 99,使用[]可以访问
var obj = {
name:'www',
age:18
}
delete obj.age; // 删除属性名为age的属性
console.log(obj); // 返回 {name: "www"}
建议使用 in
var obj = {
name:'www',
age:18
}
console.log('name' in obj); // 返回 true
console.log('skill' in obj); // 返回 false
var obj = {
name:'www',
age:18
}
console.log(obj.skill); // 返回 undefined
if(obj.skill === undefined){
console.log("不存在")
}else{
console.log("存在")
}
var obj = {
name:'www',
age:18,
skill:undefined
}
console.log(obj.skill); // 返回 undefined
console.log('skill' in obj); // 返回 true
var info = {
name:'www',
age:18,
skill:'css'
}
for(var i in info){
console.log(i + ':' + info[i]); // 返回 name:www age:18 skill:css
}
var info = {
name:'www',
age:18,
skill:'css'
}
var arr = Object.keys(info); // 将对象的属性名 方法名 放到一个数组中
console.log(arr); // 返回 ["name", "age", "skill"]
arr.reverse(); // 验证能不能使用数组的方法
console.log(arr); // 返回 ["skill", "age", "name"] ,通过翻转证明了这是一个数组
for(var j = 0; j < arr.length; j++){
console.log( arr[j] + ':' + info[arr[j]]); // 返回 skill:css age:18 name:www
}
var obj = {
name:'www',
age:18,
say:function(){
console.log(this.name + '今年' + this.age + '岁了'); //
}
}
obj.say() // 返回 www今年18岁了,this是本对象
-- 作用域的顶端
-- 使用return之后,将当前对象变成全局对象
var name = 'abc';
var obj = {
name:'www',
age:18,
say:function(){
return function(){
console.log(this.name);
}
}
}
// obj.say() // 返回 函数 function(){ console.log(this.name); }
obj.say()(); // 返回 abc
var name = 'abc';
var obj = {
name:'www',
age:18,
say:function(){
var that = this; // this代表obj
return function(){
console.log(that.username);
}
}
}
obj.say()(); // 返回 www
console.log(100 == 100); // 返回 true
console.log('abc' == 'abc'); // 返回 true
console.log([1,2,3] == [1,2,3]); // 返回 false
function info(name,age){
this.name=name;
this.age=age;
this.test = function(){
console.log('ceshi');
}
}
var people1 = new info('www',18);
console.log(people1); // 返回 {name: "www", age: 18}
var people2 = new info('abc',12);
console.log(people2); // 返回 {name: "abc", age: 12}
console.log(people1.drink == people2.drink); // 返回 false,引用的地址不同
var arr = new Array();
var arr1 = new Array();
var arr2 = new Array();
var arr3 = new Array();
1. 直接创建字符串
var str = 'abc';
2. 通过构造函数创建字符串
var str1 = new String('abc');
console.log(str1); // 返回 String {0: "a", 1: "b", 2: "c", length: 3, [[PrimitiveValue]]: "abc"}
3. str 和 str1 使用的时候结果是一样的
console.log(str == str1); // 返回 true
console.log(str === str1); // 返回 false
var list = document.getElementsByTagName('li');
for(var i in list){
if(list.hasOwnProperty(i)){
console.log(list[i]);
}
}
作者 wendy
2019 年 5月 23日