发表于: 2019-12-15 23:10:11

1 996


今天完成的事:


①日历签到



banner管理

和文章管理一样需要判断查看还是编辑。

通过存一个localStorage

// 查看
$scope.bannerCheck = function (idlook) {
var id = this.item.id;
$state.go('home.bannerAdd', {
id: id
})
localStorage.setItem("look"); //存储变量名为key,值为value的变量  
}

在点击查看后存入一个

然后在点击过去后,判断有无,有则是查看,无则是编辑。

localStorage.getItem('look')
// 查看
if (localStorage.getItem('look')) {

然后当再次返回列表页时,删除存储的look。

localStorage.removeItem('look');








1.js的原型和原型链再复习


关于这个概念吧,前前后后也看了两三次了,但对一些概念总是有些说不清楚。。


什么是js原型?

在JavaScript中原型是一个prototype对象,用于表示类型之间的关系

js每声明一个function,都有prototype原型,prototype原型是函数的一个默认属性,在函数的创建过程中由js编译器自动添加。

也就是说:当生产一个function对象的时候,就有一个原型prototype。



什么是原型链?

原型链是实现继承的主要方法。

对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,称之为原型链


原型链的关系?

    function Foo() {}// Fn为构造函数
    var f1 = new Foo();//f1是Fn构造函数创建出来的对象

    构造函数的prototype属性值就是对象原型。(Foo.prototype就是对象的原型)
    构造函数的prototype属性值的类型就是对象  typeof Foo.prototype===object. 
    对象原型中的constructor属性指向构造函数 (Foo.prototype.constructor===Fn)
    对象的__proto__属性值就是对象的原型。(f1.__proto__就是对象原型)
    Foo.prototype===f1.__proto__ 其实它们两个就是同一个对象---对象的原型。
    所有Foo.prototype.__proto__===Object.prototype
    typeof Object.prototype ===object。
    Object.prototype.__proto__===null。

最清晰表示原型链的图


2.apply()和call()的区别。

它们各自的定义:

apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。

call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。

它们的共同之处:

都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象”。

它们的不同之处:

apply:最多只能有两个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里。如果argArray不是一个有效的数组或arguments对象,那么将导致一个TypeError。如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数。

call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针。如果没有提供thisObj参数,那么 Global 对象被用作thisObj。 

实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。


明天计划的事:

真实评审


遇到的问题

周末效率低


收获

对于原型和原型链总算又进一步了解了。



返回列表 返回列表
评论

    分享到