对JavaScript面向对象的一些理解(一)对象的概念

一、对象
概念理解
对象是什么?太简单了,请欣赏下图:
这里写图片描述
哈哈 开个玩笑easy easy!下面进入正题:
提到对象首先会冒出来的就是“一切都是对象”这句话;这么讲太笼统抽象了。具体的说在编程语言里对象是一种比较特殊的数据结构(类型),可以用来描述具体的某种事物,在对象这种数据类型里,还可以存储其他的复杂的数据结构,简而言之,对象是若干属性的集合,具有强大的封装性,由此可见,在编程语言中,并不是一切都是对象,值类型就不是;
对象里是属性的集合?不会吧,对象里有属性还有方法啊,对,方法也是属性,一般是用来描述对象具有的“行为”,只是他以键值对的形式出现,因此对象里都是属性这句话是没问题的。
Js里window document 都是系统自带的对象,原始类型(null undefined, number, string, boolean)属于简单的值类型,不是对象。函数、数组也是对象。他们属于引用类型

二、对象的创建
1.字面量法

var obj = {
name : '小雪',
age : 18
    }

判断一个变量是不是对象非常简单。值类型的类型判断用运算符typeof,引用类型的类型判断用运算符instanceof。

console.log(typeof obj);
function fn(){
}
console.log(fn isntanceof Object);//true

1)对象属性的访问
使用点语法和中括号语法访问对象的属性

console.log(obj2.name); //小雪
console.log(obj2['name']); //小雪

2)在对象中我们可以设置属性(对象的特征)和方法(对象的行为),有了这些属性对象就鲜活起来,成为程序中的基本单位,我们可以用活他,让合适的对象去实现对应的功能,对象可以任意的扩展属性,如:声明一个包含多种数据结构的对象(来形容一个人)

var person = {
            name : '小玲',
            age : 18,
            isMarry : false,
            friends : [
                {
                    name : '小颜',
                    sex : '女',
                    isVIP : true
                },
                {
                    name : '旭哥',
                    sex : '男',
                    isVIP : true
                }
            ],
            boyFriend : {
                name : '男朋友',
                age : 28
            },
            //属性值也可以是函数, 注意:是匿名函数
            sayHello : function (sayContent) {
                //this 在这里表示当前对象
                console.log("大家好,我叫:" + this.name + ", 年龄:" + this.age + ", 我要说:" + sayContent + ", 我的男朋友叫:" + this.boyFriend.name);
            }
        }

二、工厂函数创建对象

function makePerson (name, age) {
            return {
                name : name,
                age : age,
                sayHello : function () {
                console.log("大家好,我叫:" + this.name + ",年龄:" + this.age);
                }   
            }
    var person1 = makePerson('大娃', 20);
    var person2 = makePerson('大娃', 20);

    console.log(person1);    // Object {name: "大娃", age: 20}
    console.log(person2);   // Object {name: "三娃", age: 18}
每新建一个对象就在内存中开辟一个新的空间,这些对象指向的空间地址不同,他们是不一样的。
console.log(person1 === person2); //false

文章太长写的累看的烦,所以创建对象的第三种方法构造函数放在了下篇,更重要的是要引出下一篇笔记的主题—函数和对象的关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值