我正在阅读MDN文档以更好地理解javascript.这是从那里的摘录
Object.prototype.objCustom = function() {};
Array.prototype.arrCustom = function() {};
let iterable = [3, 5, 7];
iterable.foo = 'hello';
for (let i in iterable) {
console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}Run Code Online (Sandbox Code Playgroud)
在最糟糕的情况下,我认为它将打印,0, 1, 2, "foo", "arrCustom"但它也打印objCustom.
更新:
1) 如何从可视化原型链iterable,以Array高达一路Object.就像有任何指向父母的iterable.getParent方法或iterable.myparent属性一样.
2)为什么它不打印数组函数,例如toString,sort它们也是打开的Array.prototype.
3)hasOwnProperty当有人向Array.prototype物业添加东西时,我是否需要始终使用?
我有一个有多个作者、流派的书籍模型。以下是具有所有外键关系的模型。
模型.py
class Book(models.Model):
title = models.CharField(max_length=200)
class Author(models.Model):
name = models.CharField(max_length=100)
class Genre(models.Model):
genre_name = models.CharField(max_length=50)
class Book_author(models.Model):
book = models.ForeignKey(Book)
author = models.ForeignKey(Author)
class Book_genre(models.Model):
book = models.ForeignKey(Book)
genre = models.ForeignKey(Genre)
Run Code Online (Sandbox Code Playgroud)
视图.py
def book_detail(request, book_id):
book = Book.objects.get(pk=book_id)
# how can i get iterated multiple authors, books attached to book dictionary
return render(request, 'detail.html', {'book': book})
Run Code Online (Sandbox Code Playgroud)
书籍对象示例:
book = {
title: 'some title',
authors: [
{
id: 1,
name: 'name1'
},
{
id: 2,
name: 'name2'
}
], …Run Code Online (Sandbox Code Playgroud) >>> li = [1, 2, 3, 4]
>>> li
[1, 2, 3, 4]
>>> del li[2] #case 1
>>> li
[1, 2, 4]
>>> del(li[2]) # case 2
>>> li
[1, 2]
>>> del (li[1]) # case 3
>>> li
[1]
>>>
Run Code Online (Sandbox Code Playgroud)
我的一位教授使用案例2从列表中删除项目.
根据python文档案例1是正确的,并且此答案中还存在另一种语法方式,因此案例3也正确,但据我所知,python中不存在del方法,案例2如何有效.我搜索了整个python文档,但找不到它.
更新: 如果我自己在我的模块中编写del方法并同时使用案例2,python解释器如何区分它们或者它将通过错误,尽管我从未尝试过